- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章软件测试(上)概要
第6章 软件测试(上);软件测试基础;软件测试基础;软件测试基础;软件测试基础;软件测试基础;软件测试基础;软件测试基础;软件测试基础;软件测试基础;从定义中看出软件测试的四个特点:
动态:软件测试总要通过一组输入执行程序。由于系统会处于不同的状态,因此对于同样的输入可能产生不同的响应。
有限:在测试中实际能够观察的执行数量是有限的。正是这种矛盾带来测试技术(测试充分性评判准则)和管理(测试工作量估计)两个方面的测试问题。
选取:很多测试手段的本质区别就是如何选择有限的测试集。
预期:必须能够确定所观察到的程序执行输出是不是可接受的,否则测试工作就是无用的。;E.W.Dijkstra 指出——程序测试能证明错误的存在,但不能证明错误不存在。
测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。;软件测试基础;软件测试基础;软件测试基础;1. 软件测试过程模型——V模型;软件测试基础;软件测试基础;软件测试原则; 需求阶段是明确系统功能、性能、领域需求等内容。要求测试人员在这一阶段要了解用户软件需求、硬件支撑环境、系统部署、用户操作流程、系统外部接口等内容,并生成系统测试计划,并形成文档。经过审查和复审,形成软件配置项。 ;软件测试基础;软件测试基础;软件测试基础;软件测试基础;软件测试基础;软件错误分类
功能错(需求分析错误)
软件结构错(设计阶段)
数据错(数据库设计)
编码错(代码实现)
软件集成错(代码实现和测试)
测试定义与测试执行错误 ;静态测试:
基本特征是在对软件进行分析、检查和测试而不实际运行被测试的软件。;1. 白盒测试:又称为结构测试、基于覆盖的测试. ;例:输入三条边长用黑盒测试,可采用的测试用例数:
(设字长32位),232 X232 X232 ≈ 296
执行时间: 设测试一次需1毫秒,共需约261年。;穷尽测试结论:
不论黑盒还是白盒测试都不能进行穷尽测试, 所以软件测试不可能发现程序中存在的所有错误, 因此需精心设计测试方案, 力争尽可能少的次数,测出尽可能多的错误。;逻辑覆盖准则
(1)语句覆盖
(2)判定覆盖
(3)条件覆盖
(4)判定/条件覆盖
(5)条件组合覆盖
(6)点覆盖
(7)边覆盖;练习:; 循环测试是大多数算法的基础,循环测试的目的是检查循环结构的有效性。循环分为简单循环、嵌套循环、并列循环和非结构循环四类,如图所示。
对于最多为n次的简单循环,应做下列测试:
(1)完全跳过循环
(2)仅循环一次;
(3)循环两次;
(4)循环m次,m<n;
(5)分别循环(n-l)次、n次、n+l次。;问题:求数组A的最小值。
k = i;
for (j = i+1; j = n; j++)
{
if (A[j] A[k])
{
k = j;
}
}; 对于嵌套循环若生搬硬套简单循环的测试策略,可能使测试次数成几何级数增长。因此需要设计减少测试次数的具体方法。
(1)从最内层循环开始测试,此时所有外层循环都取最小值,内层循环按简单循环的测试策略测试。
(2)由里向外,回退到上一层循环测试,这层循环的所有外层循环仍取最小值,由该层循环嵌套的那些循环取一些典型值。
(3)继续向外扩展,直至所有循环测试完毕。
对于并列循环分两种情况,若两个循环完全独立,采用简单循环的测试策略,反之,若第一循环的计数器用作第二循环的初值,即两循环不独立,需用嵌套循环测试策略测试。
非结构化的循环需按结构化程序设计的思想,首先将程序结构化然后再进行测试。;白盒测试;1;流图中“与”节点的逻辑表示;流图中“或”节点的逻辑表示;i = 1;
Total.input = total.valid = 0; ⑴
Sum = 0;
DO WHILE value[i] -999 ⑵ AND total.input 100 ⑶ increment total.input by 1; ⑷
IF vale[i] = minimum ⑸ AND vale[i] = maximum ⑹
THEN increment total.valid by 1;
sum = sum + value[i]; ⑺
ELSE skip;
ENDIF
increment i by 1; ⑻
ENDDO ⑼
IF total.valid 0 ⑽
THEN average = sum / total.valid; ⑾
ELSE average = -999; ⑿
文档评论(0)