前言:软件是由人来完成的,所有由人做的工作都不会是完美无缺的。软件开发是个很复杂的过程,期间很容易产生错误。无论是软件从业人员、专家和学者做了多大的努力,软件错误仍然存在。因而大家也得到了一种共识:软件中残存着错误,这是软件的一种属性,是无法改变的。 软件测试是一个找错的过程。软件测试的过程亦是程序运行的过程。
1.定义:
软件测试(SoftwareTesting):使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。
软件测试是与软件质量密切联系在一起的,归根结底,软件测试是为了保证软件质量。
其他说法:(1)为发现错误而执行程序的过程;(2)评价程序或系统属性为目的活动,是对软件质量的度量。
2.目的
(1)为了发现尽可能多的缺陷,并期望通过改错来把缺陷统统消灭,以能提高软件的质量。一个成功的测试用例在于发现了至今尚未发现的缺陷。(简言之发现错误,消灭错误)
(2)以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。
3.软件测试的原则
1.所有的测试都应追溯到用户需求;
2.把“尽早和不断地测试”作为开发者的座右铭;
3.程序员应该避免检查自己的程序,测试工作应该有独立的专业的软件测试机构来完成;
4.pareto原则(80/20原则);
5.设计测试用例时,应该考虑各种情况;
6.对测试错误结果一定要有一个确认的过程;
7.制定严格的测试计划;
8.完全测试时不可能的,测试需要终止;
9.注意回归测试的关联性;
10.妥善保存一切测试过程文档。
4.软件测试模型
软件测试过程模型是对测试过程一种抽象,用于定义软件测试的流程和方法。
随着测试过程管理的发展,软件测试专家通过实践总结出了很多很好的测试过程模型。这些模型将测试活动进行了抽象,并与开发活动有机的进行了结合,是测试过程管理的重要参考依据。
(1)V模型
V模型是最具有代表性意义的测试模型,反应出了测试活动与分析设计活动的关系。
V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能,性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求。
(2)W模型
W模型由两个V字型模型组成,分别代表测试和开发过程。
W模型强调:测试伴随着整个软件开发周期,而且测试对象不仅仅是程序,需求,设计等同样要测试,也就是说,测试与开发是同步进行的。
(3)其他模型
除了上面的两种常用模型之外,还有H模型,X模型,前置测试模型等。
H模型将测试活动完全独立出来,形成了完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。
X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行文件的程序。
前置测试模型体现了开发与测试的结合,要求对每一个交付内容进行测试。
5.软件测试分类
5.1按测试方式分类
(1)静态分类:不需要执行所测试的程序,查询代码是否符合规范,对程序的数据流和控制流进行分析;
(2)动态测试:选择实际测试用例运行所测试程序,模拟用户输入。
5.2按测试方法分类
(1)白盒测试:结构测试,代码测试。(已知软件的实现流程,按照该流程测试)
(2)黑盒测试:功能测试,基于需求的测试。(通过对照软件的规格说明书,基于系统应该完成的功能进行测试)
(3)灰盒测试:通过反编译技术进行测试。
5.3按照测试过程分类
(1)单元测试:界面测试,局部数据结构测试,边界条件测试,覆盖条件测试,出错处理;
(2)集成测试:主要测试模块间数据传输是否正确,模块集成后的功能是否实现,模块接口功能与设计需求是否一致;
(3)系统测试:整体性,可靠性,安全性等;
(4)验收测试:功能确认,配置确认。
5.4按测试目的分类
功能测试,健壮性测试,接口测试,性能测试,强度测试,压力测试,用户界面测试,安全测试,可靠性测试,安装/反安装测试,文档测试,恢复测试,兼容性测试。
6.软件测试流程
软件测试流程就是指从软件测试开始到软件测试结束经过的一系列准备,执行,分析的过程。
软件测试工作一般要通过制定测试计划,设计测试,测试准备和测试环境的建立和执行测试,评估测试和总结测试工作等几个阶段来完成。
1.测试计划
2.测试设计
3.测试准备和测试环境的建立
4.执行测试
5.测试评估
6.测试总结
7.软件测试人员应具备下列基本素质
1.具有良好的计算机编程基础;
2,.具有创新精神和超前意识;
3.不懈努力,追求完美;
4.具有很强的沟通和交流能力;
5.具有整体观念,对细节敏感;
6.团队合作精神