测试(test)最早处于古拉丁字,他有“罐”或“容器”的含义。工业制造和生产中,测试被当做一个常规的检验产品质量的生产活动。
“软件测试”的经典定义是在规定条件下对程序进行操,以发现错误,对软件质量进行评估。
国际标准ISO14598对“软件质量”的定义:软件特性的总和,软件满足规定或者潜在用户需求的能力。
国际标准ISO9126对“软件质量”的定义:软件质量包括“内部质量”、“外部质量”和“使用质量”三部分,即“软件满足规定或潜在用户需求的能力”要从软件内部、外部和使用中表现来衡量。
软件质量保证和软件测试是软件质量工程的两个不同层面的工作。
质量保证(QA) | 软件测试 |
---|---|
通过“全面质量管理”和“过程改进”来预防、检查与改进来保证软件质量 | 测试关心的不是过程的活动,而是对过程的产物以及开发出的软件进行剖析 |
QA的工作是软件生命周期的管理以及验证软件是否满足规定的质量和用户的需求 | 通过“执行”软件,对过程中的产物—开发文档和源代码进行走查,运行软件,以找出问题,报告质量 |
着眼于软件开发活动中的过程、步骤和产物,而不是对软件进行剖析找出问题或评估 | 着眼于验证每一件事是正确的同时,通过对测试中的问题分析、追踪与回归测试等工作来找出并解决更多问题 |
早期定义:寻找错误,并且尽最大的可能找出更多的错误。
Grenford J.Myers观点:
- 测试是程序的执行过程,目的在于发现错误;
- 一个好的测试用例在于能发现至今未发现的错误;
- 一个成功的测试是发现至今未发现的错误的测试。
Bill Hetzel说:测试目的不仅仅是为了发现软件缺陷与错误,而且也是对软件质量进行度量和评估,以提高软件质量。
综述:软件测试的目的,是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的的风险。是以评价一个程序或者系统属性为目标的活动,测试是对软件质量的度量与评估,以验证软件的质量满足用户的需求程度,为用户选择与接受软件提供有力依据。
原则一:所有的软件测试都应追溯到用户的需求
原则二:应把“尽早地和不断地进行软件测试”作为软件测试者的座右铭,即尽早地在软件生命周期中介入软件测试
原则三:完全测试是不可实现的,测试需要终止。
原则四:测试无法显示软件潜在的缺陷
原则五:充分注意测试中的集群现象
原则六:程序员应避免检查自己的程序
原则七:尽量避免测试的随意性
补充:
- 想要进行完全的测试,在有限的时间和资源条件下,找出所有的缺陷和错误,使软件趋于完美,是不可能的。原因有三:输入量太大;输出结果太多;路径组合太多
- Bug集群现象:经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数据或检错率成正比。对错误集群的程序段进行重点测试,以提高测试投资的效益。
- 软件测试是有组织、有计划、有步骤的活动。**