一、测试分类
按照测试阶段分类:
单元测试:程序的最小模块完成后进行的测试,可能是一个函数,也可能是一个类
集成测试:单元测试都通过之后将所有程序模块进行有序的、递增的测试,多个模块组装到一起测试,重点测试模块之间的接口部分
系统测试:将整个软件系统看为一个整体进行测试,测试依据为软件系统说明书
验收测试:检验软件是否符合用户需求的测试: alpha/beta/gamma
按照是否查看源代码分类:
黑盒测试:只测试功能,不关注功能的具体实现方式
白盒测试:不但要关注功能,还要关注代码是如何实现的
灰盒测试:介于黑盒和白盒之间的一种测试,比如接口测试
按照是否运行分类:
静态测试:不运行该软件,静态观察软件是否符合预期,比如界面测试
动态测试:运行软件,在运行过程中测试
按照是否自动化分类:
手动测试:通过测试工程师手动对软件进行测试
自动化测试:通过编写代码脚本自动测试软件是否有bug
其他分类:
冒烟测试:对软件最基本的流程和功能做一个粗略的测试,看最基本的流程是否能跑通
回归测试:当修复一个bug后,把之前的测试用例在新的代码下进行再次测试
随机测试:只要对被测软件的一些重要功能进行复测,也包括测试那些当前测试用例没有覆盖的部分
探索性测试:同时设计测试和执行测试,测试人员通过测试来不断学习被测系统
二、软件质量模型
1.功能性 :适合性,准确性,互操作性,保密安全性,功能性的依从性
2.可靠性:成熟型,容错性,易恢复性,可靠性的依从性
3.易用性:易理解性,易学性,易操作性,吸引性,易用性的依从性
4.效率:时间特性,资源利用性,效率依从性
5.维护性:易分析性,易改变性,稳定性,易测试性,维护性的依从性
6.可移植性:适应性,易安装性,共存性,易替换性,可移植性的依从性
三、软件开发过程模型
1.瀑布模型:
需求分析->概要设计->详细设计->编码->软件测试->软件维护
线性模型的一种,是所有其他模型的一个基础
每一步都是按顺序来执行,每一步都有文档产出
优点:开发的各个阶段比较清晰,当前阶段完成后,只需关注后续阶段
缺点:依赖于早期的需求调查,不适应需求的变化,风险往往延至后期才显露,失去及早纠正的机会
2.快速原型模型:
快速构建软件的原型,支持用户参与
优点:克服瀑布模型的缺点,更好满足用户需求并减少由于软件需求不明确带来的项目开发风险
缺点:不适合大型系统的开发,适合开发小型的、灵活性高的系统
3.螺旋模型
优点:螺旋模型很大程度上是一种风险驱动的方法体系
缺点:采用螺旋模型需要具有相当丰富的风险评估经验和专门知识