软件测试的分类
1)按测试阶段分
-
单元测试
- 模块接口测试:通过所测模块的数据流进行测试。调用所测模块时的输入参数与模块的形式参数的个数,属性和顺序是否匹配
- 局部数据结构测试:局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整,正确,模块的局部数据结构往往是错误的根源
- 路径测试:对模块中重要的执行路径进行测试
- 错误处理测试:比较完善的模块设计要求能遇见出错的条件,并设置适当的出错处理,以便在一旦程序出错时,能对出错程序重做安排,保证其逻辑上的正确性
- 边界条件测试
-
集成测试
1,把各个模块连接起来,穿越模块接口的数据是否会丢失
2,各个模块组合起来,能否达到预期要求的功能
3,一个模块的功能是否会对另一个模块的功能产生不利影响
4,全局数据结构是否有问题
5,单个模块的误差积累起来是否会被放大,从而达到不可接受的程序 -
系统测试
-
1,功能测试
-
2,性能测试
-
3,安全测试
-
4,兼容测试
2)是否覆盖代码
1. 白盒测试
查看源代码结构
2. 黑盒测试
功能测试:
1,逻辑功能测试
2,界面测试
3,易用性测试
4,安装测试
5,兼容性测试
性能测试:
1,一般性能测试
2,稳定性测试
3,负载测试
4,压力测试
3)是否运行
1. 静态测试
看文档,看代码,不运行程序
2. 动态测试
实际运行代码
4)其他
- 回归测试
- 冒烟测试
在新版本出来的时候,将软件的全部功能过一遍,没有大问题就开始真正的测试 - 随机测试
测试重点模块或之前出过问题的模块 - 验收测试
内测版本(alpha):内部人员测试,或者很少一部分用户;此阶段要解决严重的问题
公测版本(beta):所有用户都可以免费使用,通过用户的反馈修复软件的细节
准正式版(gamma):跟正式版几乎一样
5)是否自动化
- 人工测试
- 自动测试
补充知识:
1)关于探索性测试:
一些非常规的操作会发现一些Bug,需要对产品有深入了解,对开发技术有一定深度和宽度
2)关于交叉测试
第一遍测试很认真,第二遍的时候容易松懈,可以和其他测试人员交换测试
3)关于健壮性测试
- 又称容错性测试
- 对关键进程或线程杀死,然后观察系统行为
- 对关键进程或线程挂起,然后观察系统行为
- 网络不通,然后观察系统行为
- 数据库不通,然后观察系统行为
一,v模型
开发和测试阶段划分比较清晰:
需求分析,概要设计,详细设计,编码,单元测试(独立的模块测试),
集成测试(模块联调),系统测试(整体流程),验收测试(验证是否满足需求)
优点:包含了底层测试和高层测试;阶段划分清晰,方便工作的整体把握
缺点:测试阶段靠后,前期产生的问题,不方便修改,瀑布模型的变种,如果需求发送变化,必然要返工!
**
二,w模型
开发一个v,测试一个v,开发和测试并行:
1、 开发v(需求分析、概要设计、详细设计、编码、集成、实施、交付)
2、 测试v(系统测试设计、集成测试设计、单元测试设计、单元测试、集成测试、系统测试、验收测试)
优点:开发伴随着测试并行,需求和设计一样要进行测试;尽早的介入测试,会更早的发现问题,降低修复成本;阶段依然明显,方便整体流程把控
缺点:代码依然在测试之前,不方便代码的测试工作;如果没有文档,根本无法进行w模型;对于人员要求较高!