基本概念
测试是为了发现程序中的错误而执行程序的过程,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时纠错及时更正,确保产品的正常运作,软件测试人员必须具有创新性和综合分析能力,必须具备判断准确、追求完美、执着认真、善于合作的品质,以及具有丰富的编程经验与查检故障的能力。
测试部门需要保持其独立性。
详细分类
1、按照软件内部结构和实现
1)白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查
2)黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求
3)灰盒测试:介于白盒与黑盒之间,在关注输出正确的同时也考虑内部的实现逻辑
2、按照是否执行程序
1)静态测试:不执行程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等
2)动态测试:运行被测程序,检查运行结果与预期结果的差异
3、按照开发阶段
1)单元测试:集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能
2)集成测试:把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试
3)确认测试:检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确
4)系统测试:把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试
5)验收测试:产品发布前进行的保证用户能正常使用的测试过程
4、按照测试目的
1)回归测试
2)压力测试
3)性能测试
4)稳定性测试
5)其他专项测试
测试模型
1、V模型
1)瀑布式模型,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系
2)局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现
2、W模型
1)V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。
2)局限性:同V模型一样把开发测试作为一个串行的活动
3、H模型
1)针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序
2)局限性:对测试造成人力、物力和财力的浪费,对测试员的熟练程度要求比较高
4、X模型
1)软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。软件测试可以尽早的进行,并且可以根据被测物的不同而分层次进行
2)局限性:对于大型嵌入式项目很难实施
测试方法
1、等价类划分
1)有效等价类:对于程序规格说明来说是合理的、有意义的输入数据构成的集合
2)无效等价类:与有效等价类相反
2、边界值分析:对输入或输出的边界值进行测试的黑盒测试方法
3、错误推断:基于经验和直觉推测程序中可能存在的各种错误,从而有针对性的设计测试用例的方法
4、因果图法:利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况
5、判定表驱动:判定表是分析和表达多逻辑条件下执行不同操作的情况的方法
6、正交实验法:从大量的实验数据中挑选适量的,有代表性的点来进行测试用例设计的方法,类似的方法还有聚类分析法、因子法等
7、功能图法:综合了逻辑覆盖和路径覆盖的测试方法,偏向于灰盒测试的一种测试方法
8、场景法:根据不同的触发场景来设计测试用例