按照测试阶段来分类:单元测试、集成测试、系统测试、验收测试
一、单元测试:对软件中的最小可测试单元进行检查和验证
原则:
1.尽可能保证各个测试用例是互相独立的,例如下面的代码就使用了getpassFromDb()方法的依赖,这个就导致一个问题是,case失败后,不能确定是测试case失败还是getpassFromDb(),的问题,一般来说我们会模拟用户密码,才能保证,易维护,高质量的单元测试,到集成测试阶段,才会引入依赖方法执行测试
public void testLogin(){
String username, password;
username = 'test';
password = getPassFromDB(username);
Boolean result = app.login(username, password);
assertTrue(result);
}
2.一般有代码的开发人员来实施的,用以检验所开发的代码功能是否符合自己的设计要求
单元测试益处:
1.能尽早发现缺陷
2.有利于重构
3.简化集成
4.文档(敏捷开发---代码即文档,减少文档的存在)
5.用于设计
单元测试的限制:
1.不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误(软件测试原则1)
2.每一行代码,一般需要3~5行测试代码才能完成单元测试,所以存在投入和产出的一个平衡(原测2:穷尽测试不可能)
单元测试框架:
1、Junit---java
2、unittest---python
3、CppUnit ---C++
二、集成测试:是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明要求组装成模块,子系统或系统的过程中各部分工作是否达到或实现相应技术指标以及要求的活动
集成测试的主要实施方案
1.Big Bang:大部分的软件耦合在一起,组装好,在测试
2.自顶向下
3.自底向上
4.核心系统集成
5.高频集成
集成测试&单元测试
1.测试的对象不同:
单元:针对的是软件的可运行的最小单元
集成:模块和子系统的测试,模块个模块之间接口测试
2.测试的依据不同
单元:主要针对软件的详细设计
集成:主要针对软件的概要设计
3.测试的方法不同:
单元:仅关系单元的内部
集成:关注的是接口之间的集成
三 、系统测试:是将经过集成测试的软件,作为计算机系统的一个部分,与系统中的其他部分结合起来,在实际运行环境下对计算机系统进行一系列严格有效的测试,以发现软件潜在的问题,保证系统的正常运行
关注点:
1.关注系统本身的使用
2.关注系统与其他相关系统间的连通
3.关注系统在不同的使用压力下的表现
4.关注系统在真实环境下使用的表现
系统测试&集成测试
1.测试对象不同:
集成:由通过了单元测试的各个模块所集成起来的构件
系统:除了软件之外,还包括计算机硬件以及相关的外围设备,数据采集和传输机构、支持软件,系统的操作人员等整个系统
2.测试时间:
集成:测试介于单元测试和系统测试之间
系统:是在集成测试之后
3.测试内容:
集成:各个单元模块之间的接口
系统:整个系统的功能和性能
4.测试角度:
集成:偏于技术角度的验证
系统:偏于业务角度的验证
五、验收测试:也称交付测试,针对用户需求、业务流程的正式的测试,确定系统是满足验收标准,由用户、客户或其他的授权机构决定是否接受系统
细分:
用户验证测试
运行验收测试
合同和规范验收测试
alpha测试(开发者提供的环境,用户执行测试)
Beta测试:用户提供的环境测试