天天看点

测试的基本理论与方法(1)

 测试的基本理论与方法(1)

一、对软件测试的误解

  1、如果发布出去的软件有质量问题,那是软件测试人员的错。

  2、软件测试技术要求不高,至少比编程容易多了

  3、软件测试随便找一个能力差的人就能做。

  4、软件测试是测试人员的事,与开发人员无关。

  5、设计-实现-测试,软件测试是开发后期的一个阶段

  二、如何理解软件测试

  软件测试是一种有效的提高软件质量的手段,但即使在投入上有所保证,测试也不能百分为百发现所有质量隐患。况且软件质量并不仅仅是测试出来的。

  很多人认为软件测试就是运行一下软件,看看结果对不对。但实际上,如何在有限的投入下,提高软件测试的效率和产出是一件很见功底的事。好的测试人员不仅要掌握各种测试技术,还要具备丰富的编程经验和对BUG的敏感。测试的复杂之处,除了测试技术问题之外,还有测试管理问题。

  测试不是可有可无,随心所欲的。规范化的软件开发需要对软件测试早做计划,分配必要的时间,人力和财力等资源,并将其作为项目管理的一个部分加以控制和协调。

  开发和测试是软件项目相辅相成的两个过程,人员间的交流,协作和配合是提高整体效率的重要因素。

  软件产品开发完毕,再进行测试的观念是有悖于生命周期理论的。软件产品质量问题越晚发现,修复的代价越大。

测试的基本理论与方法(1)

  一些常识和经验之谈

  测试能提高软件的质量,但是提高质量不能依赖测试。

  测试只能证明缺陷存在,不能证明缺陷不存在。“彻底地测试”难以成为现实,要考虑时间、费用等限制,不允许无休止地测试。我们应当祈祷:软件的缺陷在产品被淘汰之前一直没有机会发作。

  测试的主要困难是不知道如何进行有效地测试,也不知道什么时候可以放心地结束测试。

  每个开发人员应当测试自己的程序(份内之事),但是不能作为该程序已经通过测试的依据(所以项目需要独立测试人员)。

  80-20原则:80%的缺陷聚集在20%的模块中,经常出错的模块改错后还会经常出错

  测试应当循序渐进,不要企图一次性干完,注意“欲速则不达”。

  三、软件测试的定义

  软件测试是为了发现错误而执行程序的过程

  软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。

  四、软件测试的对象

  软件测试不等于程序测试。软件测试贯穿于软件定义和开发的整个期间。需求分析,概要设计,详细设计,以及程序编码等各个阶段所得到的文档,包括需求规格说明,概要设计规格说明,详细设计规格说明以及源程序,都是软件测试的对象。

 软件生存各个阶段间的确认和验证

测试的基本理论与方法(1)

  软件配置:包括软件需求规格说明、软件设计规格说明、源代码 等;

  测试配置:包括测试计划、测试用例、测试驱动程序等。实际上,在整个软件工程过程中,测试配置只是软件配置的一个子集。

  测试工具:为提高软件测试效率,可使用测试工具支持测试工具。例如:测试数据自动生成程序、测试结果分析程序等。

  五、测试的目的

  测试是程序的执行过程,目的在于发现错误;

  一个好的测试用例在于发现至今未发现的错误;

  一个成功的测试是发现了至今的错误的测试。

  六、测试的种类

名称 说明
黑盒测试 基于软件需求,而不是基于软件内部设计和程序实现的测试方式。
白盒测试 基于软件内部设计和程序实现的测试方式。
单元测试 主要测试软件模块的源代码。一般由开发人员而非独立测试人员来执行,因为测试者需要懂得该单元的设计与程序实现,测试者可能需要编写额外的测试驱动程序。
集成测试 将一些“构件”集成一起时,测试它们能否正常运行。这里“构件”可以是程序模块、客户机-服务器程序等等。
功能测试 测试软件的功能是否符合功能性需求,通常采用黑盒测试方式。一般由独立测试人员执行。
系统测试 测试软件系统是否符合所有需求,包括功能性需求与非功能性需求。一般由独立测试人员执行,通常采用黑盒测试方式。
回归测试 指错误被修正后或软件功能、环境发生变化后进行的重新测试。回归测试的困难在于不好确定哪些内容应当被重新测试。
验收测试 由客户或最终用户执行,测试软件系统是否符合需求规格说明书。
名称 说明
负载测试 测试软件系统的最大负载,超出此负载软件可能会失常。
压力测试 概念上与负载测试相似,叫法不同。
性能测试 测试软件在各种状况下的性能,如在正常或最大负载下的状况。
易用性测试 测试软件是否易用,主观性比较强。一般要根据很多用户的测试反馈信息,才能评价易用性。
安装与反安装测试 测试软件在“全部、部分、升级”等状况下的安装/反安装过程。
恢复测试 测试该系统从故障中恢复过来的能力。
安全性测试 测试该系统防止非法侵入的能力。
兼容性测试 测试该系统与其它软件硬件兼容的能力。
比较测试 通过与同类产品比较,考察该系统的优点、缺点。
Alpha 测试 一种先期的用户测试,此时系统刚刚开发完成。
Beta测试 一种后期的用户测试,此时系统已经通过内部测试,大部分错误已经改正,即将正式发行。