IEEE定义:“使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求,或是弄清预期结果与实际结果之间的差别”。
G.J.Myers(梅耶)在《软件测试之艺术》书中描述:“程序测试是为了发现错误而执行程序的过程” 。
以上两个概念提出的测试方法都是要运行系统(动态测试)才能得出结果,该方法一般在开发后期介入。
而实际上,优秀的软件测试是:静态测试+动态测试。静态测试在开发前期介入。
经验证明,尽早测试,有利于软件的健康成长。当然,这与采用何种软件开发周期密切相关。
| 1 所有测试的标准都是建立在用户需求之上。 |
|---|
| 2 软件测试必须基于 ”质量第一“ 的思想去开展各项工作。 |
| 3 事先定义好产品的质量标准。 |
| 4 软件项目一启动,软件测试也就开始,而不是等程序写完,才开始进行测试。 |
| 5 穷举测试是不可能的。 |
| 6 第三方进行测试会更客观,更有效。 |
| 7 软件测试计划是做好软件测试工作的前提。 |
| 8 要设计合理的测试用例。 |
| 9 对发现错误较多的程序段,应进行更深入的测试。 |
| 10 重视文档,要善于保存一切测试过程文档。 |
软件缺陷,速称Bug,包含各种偏差、谬误或错误。

? 缺陷如果没有在早期测试发现,后期发现可能会导致大规模的重新设计与编码。

软件缺陷随着时间的推移带来的成本越来越大!

V模型的特征——将测试环节引入模型,确立了提前测试、测试驱动开发的软件开发理念。


软件测试也是一种软件过程。
软件测试是软件开发过程中的重要内容之一,是软件质量保证的关键。
比较规范的软件测试阶段划分如下:



上图总结:

综上所述,从软件产品生命周期开始,软件测试也就开始了。
测试管理——编写测试计划,监控测试过程;
测试设计——编写测试方案、测试用例;
测试执行——执行测试用例,生成缺陷报告;
-检视代码,评审开发文档(静态测试);
-运行系统进行测试(动态测试),发现软件缺陷,提交缺陷报告,并确认缺陷最终得到了修正。
通过各种测试指标测试度量软件的质量。
-如测试覆盖率、缺陷数量、缺陷解决比例等。
是指在系统测试过程中,所测试到的功能和非功能需求占到需求总数的百分比。一般我们可以通过测试用例的执行率来衡量。一般有语句覆盖、分支覆盖、条件覆盖、路径覆盖等方法。
一个通用的代码覆盖标准是:对软件关键模块的语句覆盖率要达到100%,分支覆盖要达到85%以上。
一些单元测试工具,如Junit、C++Test、Jtest等都能进行代码测试,并统计出代码的测试覆盖率。
是指在系统测试过程中,所测试到的功能和非功能需求占到需求总数的百分比。
一般我们可以通过测试用例的执行率来衡量。
一个通用的需求文档覆盖标准是:测试用例的执行率要在100%,即所有用例都要执行一遍,测试用例的通过率要达到95%以上。