1、软件测试
1.1、软件测试定义
-
定义1:软件测试是在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估 。即软件测试是为了发现错误而执行程序的过程。
-
定义2:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。
-
测试:所谓测试的含义,首先是一项活动,在这项活动中某个系统或组成的部分将在特定的条件下运行,结果将被观察和记录,并对系统或组成部分进行评价。测试活动有两种结果:找出缺陷和故障,或显示软件执行正确。测试是一个或多个测试用例的集合。
-
测试用例:所谓测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果;测试用例是执行测试的最小实体。
-
测试步骤:测试步骤详细规定了如何设置、执行、评估特定的测试用例
1.2、软件测试的基本问题
-
软件生命周期:一个软件生命周期包括制定计划、需求分析定义、软件设计、程序编码、软件测试、软件运行、软件维护、软件停用等8个阶段。
-
软件测试的对象:
-
软件测试不等于程序测试。
-
软件测试贯穿于软件定义和开发的整个过程。
-
软件开发过程中所产生的需求规格说明、概要设计规格说明、详细设计规格说明以及源程序都是软件测试的对象。
-
-
软件测试在软件生命周期中横跨两个阶段:
-
单元测试与集成测试阶段,即在每个模块编写出以后所做的必要测试。
-
综合测试阶段,即在完成单元测试后进行的测试,如集成测试、系统测试、验收测试。
-
-
软件测试涉及的关键问题包括四个方面:
-
测试由谁来执行。
-
测试什么。
-
什么时候进行测试。
-
怎样进行测试。
-
1.3、软件测试的目的
-
根据Grenford.J.Myers的观点,软件测试的目的:
-
测试程序的执行过程,目的在于发现缺陷;
-
一个好的测试用例在于能发现至今尚未发现的缺陷;
-
一个成功的测试是发现了至今未发现的多个缺陷的测试;
-
测试的目的:不仅仅是为了发现软件缺陷与错误,而且也是对软件质量进行度量与评估,以提高软件质量。
-
注:
-
测试是想以最少的时间和人力,系统地找出软件中潜在的各种缺陷,通过修正缺陷提高软件质量,回避软件发布后由于潜在缺陷造成的隐患所带来的商业风险;
-
测试的附带收获是,它能够证明软件的功能和性能是否与需求说明书相符合;
-
实施测试收集到的测试结果数据为可靠性分析提供了依据;
-
测试不能表明软件中不存在错误,它只能说明软件中存在错误
-
1.3、软件测试的原则
-
应当把"尽早地和不断地进行软件测试"作为软件开发者的座右铭;
-
测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成;
-
程序员应当避免检查自己的程序;
-
在设计测试用例时,应当包括合理的输入条件和不合理的输入条件;
-
充分注意测试中的集群现象;
-
严格执行测试计划,排除测试的随意性;
-
应当对每一个测试结果做全面检查;
-
妥善保存测试计划,测试用例,出错和最终分析报告,为维护提供方便。
2、软件测试分类
-
按照开发阶段划分
-
单元测试
-
集成测试
-
系统测试
-
确认测试
-
验收测试
-
-
完整的开发流程
-
按照测试实施组织划分
-
开发方测试
-
用户测试
-
第三方测试
-
-
按照测试技术划分
-
白盒测试
-
黑盒测试
-
灰盒测试
-
3、软件测试的周期性
软件测试的周期性是"测试->改错->再测试->再改错"这样一个循环过程,如下图所示
4、软件测试停止准则
-
第一类标准:测试超过了预定时间,则停止测试。
-
第二类标准:执行了所有的测试用例,但并没有发现故障,则停止测试。
-
第三类标准:使用特定的测试方案作为判断测试停止的基础。
-
第四类标准:正面指出停止测试的具体要求,即停止测试的标准可定义为查出某一预订数目的故障。
-
第五类标准:根据单位时间内查出故障的数量决定是否停止测试。