参考文献
‘s approach>> fifth edition
http://liligigirain.blog.sohu.com/rss
软件测试的概念
设计软件测试的目标:能够系统的揭示不同类型的错误,并且耗费最少时间与最小工作量。
不要指望软件测试说明错误和缺陷不存在,只应该认为软件测试可以表示软件错误和缺陷已经出现。
我们进行系统的软件测试的目的是最大可能的发现并清除软件的错误。虽然代码评审和其他工作仍很重要(我认为Source Review是软件质量保证的核心),但没有什么能够取代软件测试。
软件测试的常用方法
一 黑盒测试
根据产品应提供的功能,通过测试去验证各功能是否完全实现,同时在各功能中寻找错误(不关心功能是如何实现的)
二 白盒测试
理解产品功能实现的内部设计,保证一个模块中所有的独立路径至少被测试一次。
三 Web工程的测试
但是由于工作量太大,资源有限(时间、人力、成泵),白盒测试不可能做到穷举所有的逻辑路径并测试,因此白盒测试不能保证程序百分之百的正确。我们应该结合使用黑盒测试和白盒测试。对重要模块使用白盒测试。
白盒测试方法
白盒测试方法较容易被程序员接受,因为它和代码逻辑紧密相关。
一 基本路径测试
1)阅读完需求说明书后,程序员和白盒测试人员(也可能是程序员自己)应该绘制流图。流图就是图,用圆圈表示节点,代表一个或多个过程语句。节点间使用箭头表示控制流的方向,称为边。如果从一个节点散发出多条边(一般两条),则这个节点就包含了条件判断,被称为判定节点。由边和节点隔开的空白称为区域,流图外部总是应该被算作一个区域。流图的绘制可以参考下图:
黑盒测试方法
黑盒测试用于辅助白盒测试发现其他类型的错误。比如:
1)功能不对或者遗漏
2)接口错误
3)数据结构或外部数据库访问错误
4)性能错误
5)初始化和终止错误
一 基于图的测试方法
理解软件中模块化的对象,并用节点表示。节点权值描述了节点的属性。用连接表示节点之间的关系。连接权值描述了连接的属性。
连接有几种形式:单向连接表示一个方向,双向连接(无向连接、对称连接)用于两个方向,并行连接表示两个节点之间有多种不同的关系。
该测试方法‘s approach>> fifth edition并没有作更详细地介绍,还待参考其他资料。
图模型可能有循环,可以使用白盒测试中用于循环测试的技术。
二 等价划分
如果某个输入的各种可能数据可以划分成若干个子集合,等价类是指其中一个子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,因此我们测试该等价类的代表值就等于对该等价类所有值的测试。
因此,可以把这个输入的全部可能数据合理划分为若干等价类,在每一个等价类中取一个数据进行测试,就可以达到用少量代表性的测试数据取得较好的测试结果的目的。
划分等价类的标准:
1)完备测试、避免冗余;
2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;
3)并是整个集合:完备性;
4)子集互不相交:保证一种形式的无冗余性;
5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到”相同的执行路径”。
6)总是考虑有效数据构成的等价类和无效等价类
输入条件通常是一个特定值,一组相关值,一个数据域或一个布尔条件。对于不同的数据类,有不同的等价类划分方法:
输入条件 |
等价类划分方法 |
特定值 |
定义等于、大于、小于特定值的三个等价类 |
一组相关值(假设有N个) |
定义属于该集合的N个有效等价类和不属于该集合的无效等价类 |
一个数值域 |
定义在域中,小于域,大于域的三个等价类,比如学生成绩作为输入条件,数值域是从0到100的闭区间 |
一个布尔条件 |
定义真或者假两个等价类 |
首先应该确定输入由哪些输入条件组成,每个输入条件是哪一种输入数据类或几种输入数据类的组合,然后根据上表定义对应的等价类,最后选取测试数据。比如:
假设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的”日期检查功能”。
1)划分等价类并编 ,下表等价类划分的结果
输入条件 有效等价类 无效等价类
日期的类型及长度 ①6位数字字符 ②有非数字字符
③少于6位数字字符
④多于6位数字字符
年份范围 ⑤在1990~2049之间 ⑥小于1990
⑦大于2049
月份范围 ⑧在01~12之间 ⑨等于00
⑩大于12
2)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编 分别为①、⑤、⑧,设计的测试用例如下:
测试数据 期望结果 覆盖的有效等价类
200211 输入有效 ①、⑤、⑧
3)为每一个无效等价类设计一个测试用例,设计结果如下:
测试数据 期望结果 覆盖的无效等价类
95June 无效输入 ②
20036 无效输入 ③
2001006 无效输入 ④
198912 无效输入 ⑥
200401 无效输入 ⑦
200100 无效输入 ⑨
200113 无效输入 ⑩
经过一段时间的实践,我总结了一个比较方便使用的等价划分方法的模板:http://spreadsheets.google.com/puby=pAW5RoGCUR3xclQXDOJIYcQ
三 边界值分析(BVA)
边界值分析补充了等价划分技术,不仅注重输入条件,而且也从输出域中导出测试案例。输入条件中,也总是选择等价类边界的测试案例。
原则:
1)如果输入条件的值大于a,小于b,测试案例应包含a、b的值,略大于a和略小于b的值。
2)如果输入条件为一组相关值,应选择最大和最小值,即第二大和第二小的值。
3)将1、2用于输出条件。测试数据要求输入能够造成运用1)和2)原则的输出数据
4)如果内部程序数据结构有边界,要在其边界测试数据结构。(白盒测试应该关心br id=”r.75218″>
四 比较测试
有些可靠性要求很高的软件,在资源允许的情况下,可能会另外开发一套系统,用来比较。
五 正交数组测试
对用穷举测试过大,而输入域相对较小的情况,正交数组测试方法能够更好的获得输入域的覆盖率。具体使用尚不清楚。
一 链接测试
主要从三方面测试:有没有孤立的页面。该页面没有任何链接指向它,必须知道准确的路径才能访问;链接的目的文件是否不存在;连接的目的文件是否正确。链接测试可以采用软件来辅助,推荐使用下面的软件工具:Xenu Link Sleuth 免费 绿色免安装软件。
软件测试的策略
一 定义
把软件测试案例的设计方法集成到一系列已经周密计划过的步骤中,使软件的开发得以成功完成。
软件测试策略定义了一个road map,描述了测试的步骤,以及当这些步骤在计划和实施的过程中,需要多少工作量、时间和资源。
二 人员组织
软件开发人员参与测试的兴趣往往是证明他们的程序毫无错误,这些兴趣是和测试的目的相互矛盾的。但是以此为理由认为软件开发人员根本不应该参与测试,而只是应该交给独立测试组(ITG)来测试的观点也是不对的。
通常,开发者总是负责程序的个体单元测试,保证每个单元能够完成设计的功能。很多时候,开发者也进行集成测试,ITG通常在软件体系结构完成后才开始介入。在ITG介入后,开发人员应该和ITG紧密合作,在测试中发现的错误,应由开发人员修改。
通常,ITG应用向软件质量保证部门负责,以获得应有的独立性。
三 螺旋型测试阶段
与螺旋形软件工程过程对应,测试也可以使用螺旋形过程。
单元测试用于测试代码实现的各个单元;集成测试侧重于软件的体系结构的设计和构造;确认测试阶段是对需求是否实现测试;系统测试就是把软件和其他的系统元素放在一起进行测试。
单元测试大量使用白盒测试;集成测试使用最多的是黑盒测试,也会结合一些白盒测试技术;确认测试只使用黑盒测试,系统测试已经跳出了软件工程的范围。
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34460 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!