- 什么是软件测试
- 测试的对象
- 测试的过程模型
- 测试的生命周期
- 测试方法
- 测试基本原则
什么是软件测试
- 发现软件缺陷
- 对软件质量进行评估
软件缺陷及其原因
软件测试的主要目的之一,就是发现软件缺陷。
什么是软件缺陷
- 软件未实现规格说明书中的功能 - 少了功能
- 软件功能出现了不应有的错误 - 功能有,但是有BUG
- 软件功能超出规格说明书的范围 - 画蛇添足
- 软件未达到应达到的目标 - 没完成预期功能
- 软件不易理解、不易使用、运行速度缓慢 - 在用户角度考虑问题
软件缺陷的来源
软件需求缺陷分析:
- 需求人员调研得到的需求和用户真正想要的之间是有比较大的差异的。
- 需求人员得到需求后,编写需求文档时出现了歧义或者是错误,导致设计人员理解错误。
软件设计缺陷分析:
- 设计人员根据需求文档进行软件设计,这个过程是一个信息理解、信息传递的过程,必然存在着信息的损失和扭曲,又引进了一批错误。
编码人员缺陷分析:
- 技能不够熟练、需求理解有问题导致的错误。
其他缺陷分析:
- 环境配置有问题等。
通过这个图我们可以看出,需求占大头。我们要加强对软件需求文档的测试,提高需求文档的质量最终来提高软件的质量。
软件测试的对象
- 程序 - 功能正确、性能良好
- 文件 - 用户手册、运维手册 排版正确,内容完整准确
- 数据 - 配置文件
我们提交给用户的系统不仅仅是包括程序,还包含了文件和数据。我们不要只盯着程序进行测试,文件和数据也要进行测试。
软件测试的过程模型
所谓模型,就是对一个问题进行抽象、简化,让我们能清晰的了解到各元素的相互关系。
- V模型
- W模型
- X模型
- H模型
我们重点介绍V模型和X模型。
V模型
最开始,需求人员到用户处去了解用户需求,我们之后得到了需求文档。
需求文档就是描述了我们要做什么样的东西,有哪些功能。
开发人员根据需求文档来编写概要设计文档,概要设计文档主要是说一下我们这个系统有哪些模块,各个模块的调用关系,接口关系。
之后是进行详细设计,对每个模块进行细化,我这模块有哪些功能。
之后是编码实现各个子功能。
编码完成之后进行单元测试。单元测试的目的是验证详细设计文档规定的功能是不是被正确实现了。
然后是集成测试。集成测试的目的是验证概要设计文档是不是被正确实现了。
之后是系统测试。系统测试的目的是验证需求文档是不是被正确实现了。
之后就是交付用户进行验收测试。
单元测试和集成测试是各公司根据自己的技术实力来决定是否进行测试。小公司只进行系统测试。
V模型的缺陷
- 开发阶段和测试阶段是顺序执行的,没有进行并行的工作。
- 有一些问题会到最后才会被发现。(到系统测试的时候才发现需求说明有问题,再改就回改概要设计、详细设计一连串,麻烦的要死)
W模型
为了改进V模型的缺陷,我们引入了W模型。
黄色的是开发的工作,绿色的是测试的工作。它们的工作是并行的。
得到需求文档之后,我们就根据需求文档设计系统测试用例。
概要设计文档完成之后,我们根据概要设计文档进行集成测试用例的设计。
详细设计文档完成之后,我们根据详细设计文档进行单元测试用例的设计。
然后编码完成之后进行单元测试。
然后使用集成测试用例进行集成测试。
然后用系统测试用例进行系统测试。
最后交付用户进行验收。
W模型优点
- W模型把测试的一些工作提前了,并行进行,缩短开发周期。
- 可以在设计测试用例阶段尽早的发现问题,从而提高产品质量
X模型
一个模块好了就把它集成到当前的系统中进行集成测试。跟搭积木一样,弄好一块就添加上去。
H模型
某个条件一旦具备就开始进行测试