第一章
一、计算机软件的发展分类
早期软件开发的特点:
软件规模小、复杂程度低、开发过程不规范
测试的情况:
测试等同于调试
目的纠正软件的已经知道的故障
投入少,介入晚
成为一种发现软件的活动(1957)
测试不等于调试
调试:在已知条件下,对软件程序代码做检查
测试:在未知错误的情况下,检查程序代码是否有误
软件测试从软件质量保证的角度检查代码是否有问题,调试是为了解决当前错误,调试无法代替测试
正向思维针对软件功能特点,逐个验证正确性,被称为第一类方法
认为软件有问题,使用逆向思维去发现问题
对软件测试的定义
测试是为了发现错误而执行的一个程序或者系统的过程
1980年质量的概念融入软件测试
测试是为了度量和提高被测试软件的质量。
软件测试的概念
软件测试是对软件形成过程的文档,数据以及程序进行测试,而不仅仅是对程序进行的测试
软件测试的目的
对开发:软件测试通过找到问题缺陷帮助开发人员找到开发过程中存在的问题,包括软件开对测试:发模式,工具,技术等方面存在的问题与不足,预防下次缺陷的产生
使用最少的人力物力时间找到软件的隐藏缺陷,保证软件质量1,为后面测试积累经验
对用户:软件测试能够检验软件是否符合客户需求,对软件进行质量评估
软件测试的分类
单元测试
又称模块测试,针对软件设计的最小单位——程序模块 进行准确性检验的测试工作
目的在于检查每一个程序单元能否满足详细设计说明中的模块,性能,接口和设计约束等要求,发现模块内部中可能存在的错误。单元测试需要从内部结构出发设计测试用例,多个模块可以平行的独立进行单元测试
集成测试
也叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的,递增的测试。集成测试检验程序单元或部件接口的关系,使他们逐步符合概念设计要求的程序部件或整个系统。
系统测试
将测试软件在实际环境中运行,与其他的系统成分(数据库,硬件和操作人员)组合在一起进行测试,用于评估整个系统的行为并确保系统符合用户需求。
验收测试
主要对软件产品进行验证,逐行逐字的按照说明书的描述对软件产品说明进行测试,确保客户的各项需求。
按照测试环境
α测试:
是一个用户在开发环境下进行的测试,也可以是开发机构用户在模拟实际操作下进行的测试。
β测试:
是在软件的一个或多个用户的实际使用环境下进行的测试。
白盒测试
通过对程序内部结构分析、检测来寻找问题。它将测试对象看成一个透明的盒子,即清楚了解内部结构和处理过程,以此检查软件内部动作是否按照设计说明的规定正常进行。
黑盒测试
通过软件外部表现来发现其缺陷和错误。它把测试对象看成一个黑盒子,不考虑内部结构和处理过程。在程序界面处进行测试,它只是检查程序是否按照规定的说明书正常运行。
灰盒测试
介于黑白之间。灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种内部关注不像白盒那么完整,通过表象性的现象,事件,标志来测试。
功能测试
逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试。
性能测试 --时间&空间
一般性能测试
稳妥性能测试
负载测试:通过测试系统资源超负荷情况下的表现,来验证一步一步加
压力测试:直接超负载
了解:
回归测试
对修改后的重新测试
冒烟测试
先验证是否具有可测性
随机测试
基于经验和直觉测试,模拟用户真实操作,并发现边缘性错误
测试项目:
需求测试、界面测试、功能性、安全性、可靠性、可维护性、兼容性、压力测试、疲劳测试
软件测试的原则
- 所有测试的标准都建立在用户需求上
- 基于“质量第一”的思想去开展工作,时间要服从质量
- 事先定义质量标准,对产品质量进行分析评估
- 软件项目启动,测试就开始
- 穷举测试不可能,不可能运行路径的每一个组合
- 第三方测试更有效
- 软件测试计划是做好软件测试工作的前提
- 测试用列是设计出来的,不是写出来的,需要根据测试目的,采用相应的方法去设计,提高测试效率,更多的发现错误,提高可靠性
- 对发现错误多的程序段,应该更深入测试,一般来说,一段程序中错误数越多,软件错误概率越大
- 重视文档,妥善保存一些测试过程文档(测试设计,测试用例,测试报告)
- 回归测试的关联性要注意,修改一个错误可能会引起过多错误
- 小规模->大规模
- 不能将测试用例置之度外,排除随意性
- 必须彻底检查每个测试结果
- 注意测试错误集中发生的现象
- 对测试结果要有一个确认的过程