第一部分 软件测试基础
第 3 章 软件测试的常识
本章要点:
● 了解公司里测试部门的组织结构,软件测试工程师所需具备的素质,以及成为一名优秀的测试工程师的条件。
● 掌握软件测试和软件质量的关系,软件测试和SQA的关系,软件测试的一些基本原则。
1. 软件测试工程师应具备的基本职业素质
三心:细心、耐心、信心。二意:服务意识、团队合作意识。一能力:沟通能力。技术能力:一般黑盒测试工程师要会搭建测试环境,掌握常用的黑盒测试技术;白盒测试工程师还要求具备一定的读代码能力。
2. 如何成为一名优秀的测试工程师
首先打好基础,学好计算机硬件、网络、操作系统、数据库等知识。掌握各种测试技术,比如黑盒测试中的等价类、边界值、因果图等,白盒测试中的语句覆盖、分支覆盖、路径覆盖等。
想要继续提高,有一些操作性比较强的做法:
① 不断学习充电
② 阅读原版书籍
③ 阅读缺陷管理系统中的缺陷报告
④ 阅读高手写的测试用例
⑤ 学习产品相关的业务知识
3. 软件测试和软件质量的关系
软件测试是保障软件质量的手段之一。
软件的高质量是设计出来的,而不是靠测试修补出来的。
4. 什么是SQA、QA
SQA(Software Quality Assurance),软件质量保障,一般把从事软件质量保障的人员称为QA。SQA是独立于项目组之外的第三方监督机构。在公司里,SQA一般需要做以下工作:
● 通过监控软件开发过程来保证产品质量。
● 保证开发出来的软件和软件开发过程符合相应标准与规程(ISO9000或CMM)。
● 保证软件产品、软件过程中存在的不符合问题得到处理,必要时将问题反映给高级管理者。
● 确保项目组制定的计划、标准和规程适合项目组需要,同时满足评审和审计需要。
5. SQA与测试的关系
● 测试是在发现问题(Detection),SQA是在预防问题(Prevention)。测试的时候,Bug已经实际存在了;而SQA则需要将Bug扼杀在萌芽之前。
● 理论上,测试作为软件生命周期的一部分,其过程也要受到SQA监督。
● 在国内,许多名义上的SQA做着测试的工作;许多测试人员做着部分SQA的工作,职位界定比较模糊。如果在小公司工作的话,往往就要身兼数职,既要把本职工作测试干好,又要做一部分SQA的工作,比如进度监控、文档整理等工作。
6. CMM
CMM,全称为Capability Maturity Model,即能力成熟度模型,是SQA用来监督项目的一个标准质量模型。CMM共分5级:初始级、可重复级、已定义级、已管理级、优化级。
7. 软件测试的一些基本原则
7.1 Zero Bug与Good Enough
Zero Bug指的是软件没有任何Bug,Good Enough指的是只要软件达到一定的质量要求,就可以停止测试了。
Good Enough原则就是一种权衡投入/产出比的原则。制定最低测试通过标准和测试内容,然后具体问题具体分析。关于项目组如何具体制定测试的通过标准,没有统一的标准答案,可以参考下面的标准:
● 遗留Bug数在10个以下,其中严重的Bug在5个以下。
● 测试用例的执行率在100%,通过率为95%。
● 如果做了单元测试的话,关键模块的语句覆盖率要达到100%,分支覆盖率要达到85%。
7.2 不要试图穷举测试
穷举测试指的是测试时考虑所有可能的输入值。既然穷举测试不好做,那就需要在测试用例上多下功夫,设计出优秀的测试用例,用最少的测试用例达到最大的覆盖率。
7.3 开发人员不能既是运动员又是裁判员
也就是说,测试应该由独立的第三方机构来完成。
开发者对程序的功能、接口十分熟悉,他自己几乎不可能因为使用不当引发错误,这与大众用户的情况不太相似,所以开发人员自己测试程序难以具备典型性。软件开发实践证明,让别人来检查自己的工作会发现更多的错误。
7.4 软件测试要尽早执行
实践证明,在大多数情况下,在需求分析阶段就会产生缺陷,而且需求分析阶段引入的缺陷是最多的,其修复成本却是最低的,所以软件测试应该尽早执行,越早执行,风险越小。
要想保障软件的质量,必须在需求阶段就开始测试,测试需求说明是否真正符合用户的需求,测试软件设计是否严格按照需求说明的要求等,这样可以减少后期测试和维护的工作量。
7.5 软件测试应该追溯需求
首先,需求分析人员(系统分析师)根据用户需求撰写《系统需求规格说明书》。
随后,系统设计人员(系统架构师)根据需求说明来设计软件,产生了《概要设计》和《详细设计》文档。
接着,开发人员根据设计文档进行编码。
当遇到一个软件问题,应该去追溯它的源头,看看是由于编码的错误、设计的错误,还是需求说明的错误。
7.6 缺陷的二八定理
指的是一般情况下,软件80%的缺陷集中在20%的模块中。通常也把缺陷的二八定理称为缺陷的集群现象或是虫子窝现象。
7.7 缺陷具有免疫性
指的是程序员在修改完缺陷,把新版本提交给测试人员后,测试人员根据相同的测试用例进行回归测试,其效果会大打折扣,这要求测试人员要根据新版本的特点去修改维护测试用例。
注:一个值得注意的经验
每修复3~4个缺陷,一般就会产生一个新的缺陷,所以要充分注意修改错误所产生的影响和波及效果。