首页 > 范文大全 > 正文

浅谈白盒测试技术

开篇:润墨网以专业的文秘视角,为您筛选了一篇浅谈白盒测试技术范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:伴随着软件和硬件的发展而逐步发展起来的软件测试。软件测试是一种检验手段,目的是为了寻找软件系统的中缺陷,在业界已经有越来越多的公司意识到了软件测试的重要性,并且在软件测试方面加大了投入。其中,白盒测试是软件测试技术中最基本的方法之一, 是针对被测单元内部是如何进行工作的测试,是以覆盖测试与路径测试为基本策略。该文将重点介绍白盒测试中的常用测试方法,并通过实例介绍实际运用白盒测试的技术。

关键词:白盒测试;语句覆盖;判定覆盖;条件覆盖;组合覆盖;路径覆盖

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)11-2633-02

On the White-Box Testing Techniques

HONG Xin-feng

(Traffic Police Branch Of Quanzhou Police Security Burea, Quanzhou 362000, China)

Abstract: With the development of software and hardware, software testing is developed gradually.Software testing is a means of test, the aim is to find defects in the software systems, More and more companies have realized the importance of software testing in the industry and increased the investment in the software testing. Among them, white-box testing is the most basic method,and the unit under test is how to work within the test with pertinence, which based on the coverage testing and path testing for the basic strategy. This article focuses on the white-box testing of the used test methods commonly, and through examples to illustrate the practical application of white-box testing techniques.

Key words: white-box testing; statement coverage; decision coverage; condition coverage; combination of coverage; path coverage

1 白盒测试的概念

白盒测试是针对被测单元内部是如何进行工作的一种测试方法.它根据程序控制结构设计导出测试用例,主要用于软件程序的验证。又称透明盒测试、逻辑驱动测试。

采用白盒测试应全面的了解程序内部的逻辑结构,对所有的逻辑路径进行测试,是一种穷举路径的测试方法。在使用这种方法时,测试者必须检查程序的内部结构,从检查程序的逻辑结构着手,得出测试数据。

2 白盒测试的常用方法

覆盖率测试用例设计方法是一种常用的白盒测试方法。覆盖率不是目标,只是一种手段。测试的目标是尽可能地去发现错误,去寻找被测试对象与规定的不一致的地方。

目前,比较常用的覆盖测试用例方法包括语句覆盖、判定覆盖、条件覆盖、组合覆盖、路径覆盖。为了便于理解,我们结合一个实例来分别讲解这几种方法。(程序如下)

1) ---- IF ((A

2) ---- y=y/A

3) ---- IF ((C>2) and (X>1))then

4) ---- z=z+1

5) ---- 结束

根据程序画出相应的流程图和流图如图1,图2所示。

1) 语句覆盖

采用语句覆盖方法应选择足够多的测试用例,使程序中的每个可执行语句至少执行一次。

例如上述实例,我们设计一个能通过流图中路径BCEF(执行了程序(1)(2)(3)(4)(5)语句)的测试路径即可。即当A=1,B=1,C=3,X=2 时程序的五个语句均得到执行,完成了语句覆盖。换句说,测试用例 A=1,B=1,C=3,X=2 就可以满足了语句覆盖。

2) 判定覆盖

判定覆盖比语句覆盖较强一种的方法,它通过执行足够的测试用例,使得程序中的每个判定至少都获得一次”真”值和”假”值.也称为”分支覆盖”。

例如上述实例,要满足判定覆盖的测试用例就要使程序中的(1)语句和(3)语句获得一次”真”值和”假”值。

判定((A

判定((C>2) and (X>1))的值至少获得一次”真”值(C=3,X=2)和”假”值(C=2,X=2)。于是,我们可以设计出以下两组测试用例就可以满足判定覆盖。

测试用例1:A=1,B=1,C=3,X=2

测试用例2:A=2,B=1,C=2,X=2

3) 条件覆盖

条件覆盖是设计若干个测试用例,在执行测程序以后,要使用每个判定中的每个条件的可能值至少满足一次.

例如上述实例,要满足条件覆盖的测试用例,就要满足以下要求:

判定((A

同理,也要使判定((C>2) and (X>1))中的条件(C>2) 的值至少获得一次”真”值(例如:C=3)和”假”值(例如:C=2),条件(X>1)分的值至少获得一次”真”值(例如:X =2)和”假”值(例如:X =1)。

于是,我们可以设计出以下两组测试用例就可以满足条件覆盖,测试用例如下:

测试用例1:A =1,B=1,C=3,X=2

测试用例2:A=2,B=2,C=2,X=1

4) 组合覆盖

组合覆盖是通过执行足够的测试用例,使得每个判定中的条件的各种可能都至少执行一次.因此组合覆盖的测试用例一定满足判定覆盖、条件覆盖。

例如上述实例,要满足组合覆盖的测试用例,就要满足以下要求:

对于,判定((A

(A

(A

(A

(A

同理,也要使判定((C>2) and (X>1))中的条件的各种可能值有:

(C>2)、(X>1)两者的逻辑值同时为真,例如 C=3,X =2;

(C>2)、(X>1)两者的逻辑值同时为假,例如 C=2,X =1;

(C>2)、(X>1)两者的逻辑值前一个为真,后一个为假,例如C=3,X=1;

(C>2)、(X>1)两者的逻辑值前一个为假,后一个为真,例如C=2,X=2;

于是,我们可以设计出以下四组测试用例就可以满足组合覆盖,测试用例如下:

测试用例1:A =1,B=1,C=3,X=2;

测试用例2:A=2,B=2,C=2,X=1;

测试用例3:A =1,B=2,C=3,X=1;

测试用例4:A =2,B=1,C=2,X=2;

5) 路径覆盖

路径覆盖是指设计足够多的测试用例,要求覆盖程序中所有的可能的路径. 路径覆盖就是从一个程序的入口开始,执行所经历的各个语句的完整过程。

例如上述实例,要满足路径覆盖的测试用例,就要覆盖AD、AEF、BCD、BCEF这四条路径(流图所示)。

于是,我们可以设计出以下四组测试用例就可以满足路径覆盖,测试用例如下:

路径1AD (1-3-5)测试用例1:A =2,B=2,C=2,X=1;

路径2AEF(1-3-4-5)测试用例2:A =2,B=2,C=3,X=2;

路径3BCD(1-2-3-5)测试用例3:A =1,B=1,C=2,X=1;

路径4BCEF(1-2-3-4-5) 测试用例3:A =1,B=1,C=3,X=2;

3 结束语

本文着重介绍了白盒测试的基本概念、常用的测试技术、并通过实例进行讲解。白盒测试是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。白盒测试普遍应用于单元测试当中。

参考文献:

[1] 毛志雄.软件测试理论与实践[M].北京:中国铁道出版社,2008.

[2] 贺平.软件测试教程[M].北京:电子工业出版社,2007.

[3] 佟伟光.软件测试技术[M].北京:人民邮电出版社,2005.