·按照阶段 按照手段 按照测试模式 按照测试类型
·按测试阶段来分类:单元测试 集成测试 系统测试 验收测试
单元测试:对软件中的最小可测试单元进行检查和验证。
单元测试的原则:
1.尽可能保证各个测试用例是互相独立的。
2.一般由代码的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。
单元测试的益处:
1.能尽早的发现缺陷。TDD
2.有利于重构。
3.简化集成。
4.文档。 尽可能的减少文档。
5.用于设计。
单元测试的限制:
1.不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误。
2.每一行代码,一般需要3~5行测试代码才能完成单元测试。所以存在投入和产出的一个平衡。
单元测试框架:JUnit nunit PHPUnit CppUnit
JUnit学习:慕课网《Junit-Java单元测试必备工具》
集成测试:是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。
集成测试的主要实施方案:
1.Big Bang 一次性集成,把大部分的开发模块耦合起来,形成一个完整的软件系统,或系统的主要组成部分,并把它们拿来做集成测试。
2.自顶向下 从主程序开始,沿控制层逐层的向下来集成,逐层来测试,覆盖所有的模块。
3.自底向上 最常用方法,从模块最底层开始,逐层向上组装,向上测试。不用编写桩模块。能够比较好的锁定软件缺陷所在位置。
4.核心系统集成 先把核心软件部分挑选出来,并对这些部件进行集成测试,在测试通过的基础上,再逐渐的扩展到外围的一些部件,直到最后形成稳定的软件产品。
5.高频集成 指同步于软件开发过程,每隔一段时间,开发团队对现有的代码,进行一次集成测试,即持续集成。
核心系统集成与高频集成的结合是现代敏捷的研发方式比较常用的一种集成方式。
自底向上或者是自顶向下在传统的瀑布式的产品研发中比较常用。
集成测试&单元测试的不同
1.测试的对象不同
单元测试:针对软件基本单元、最小单元测试
集成测试:针对模块和子系统 模块和模块之间借口关系。
2.测试的依据不同
单元测试:主要针对软件的详细设计。测试用例主要依据是详细设计。
集成测试:主要针对软件的概要设计。测试用例主要依据是概要设计。
3.测试的方法不同
单元测试:关注的是单元内部。
集成测试:关注的是接口之间的集成,即模块之间的接口集成。
系统测试:是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效地测试,以发现软件潜在的问题,保证系统的正常运行。
关注点:关注系统本身的使用
关注系统与其他相关系统间的连通
关注系统在不同使用压力下的表现
关注系统在真实使用环境下的表现
系统测试&集成测试的不同
1.测试对象不同
集成测试:由通过了单元测试的各个模块所集成起来的构件
系统测试:除了软件之外,还包括计算机硬件及相关的外围设备、数据采集和传输机构、支持软件、系统操作人员等整个系统。
2.测试时间不同
集成测试:介于单元测试和系统测试之间的测试
系统测试:在集成测试之后
3.测试内容不同
集成测试:各个单元模块之间的接口
系统测试:整个系统的功能和性能
4.测试角度不同
集成测试:偏于技术角度的验证
系统测试:偏于业务角度的验证
验收测试:也称交付测试。针对用户需求、业务流程的正式的测试,确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。
细分:用户验收测试 由开发方在移交产品之前来运行的测试。
运行验收测试 由运维的层面来看系统是否能够正常的运行,正常维护的
合同和规范验收测试 主要参照约定的规范进行的验收,针对政府法律法规。
alpha测试 在开发者所提供的场所或环境中来运行,由用户来执行,但是场所和环境由开发者提供。
Beta测试 完全脱离开发者,在用户提供的场所或者环境下来进行测试。
单元测试:是各个阶段测试的基础,测试的对象是最小的可测试单元
集成测试:关注的是各个最小单元模块之间的接口,和子系统的集成
系统测试:把整个系统整装以后,置于真实的运行环境,进行全面的评估
验收测试:从用户的角度,对系统软件的认可验收