一、单元测试:最小可测试模块(函数(C语言)、类(java)、一个功能等)
针对代码
原则:1、尽可能保证各测试用例互相独立、不使用相互依赖的方法,可以用模拟方法来替代
2、一般由代码的开发人员来实施,或敏捷开发中的结对人员
单元测试益处 :
1、尽早发现缺陷 ,敏捷研发:TDD(测试驱动开发) 先编写单元测试,再编号功能代码,保证代码能通过单元测试用例通过,也是对需求的二次确认和清晰理解
2、有利于重构,完美的单元测试有利于重构,可快速识别
3、简化集成:保证最小单元模块的稳定性和正确性
4、文档 减少文档 单元测试包含了对模块的基本理解,通过对代码的阅读就可以基本理解需求
5、用于设计 可以把设计思路在单元测试的代码中体现出来
限制:1不能覆盖所有执行路径,捕捉到所有错误
2、每一行代码一般需要3~5行测试代码才能完成单元测试,需要找到一个平衡点
单元测试框架: Junit (java) nunit(net) Cppunit (C++)
编程Junit:
1.新建java project--右键“参数”--add library--选中Junit
2.把要测试的程序导入项目,选中.java,右键新建“Junit test case”,选中“setup”、“teardown”,选择测试方法。查缺补漏,即生成单元测试脚本--测试用例。
3.选中单元测试脚本,右键“run as”Junit Test运行
二、集成测试:在单元测试的基础上,针对已经完成单元测试的功能进行组装,针对单元测试的接口
主要实施方案:
1 bigbang 把大部分功能组成在一起进行测试
2自顶向下 逐层
3 自底向上 常用 从程序模块的最低模块开始,逐层向上组装测试,好处:针对已经组装的测试,不再需要针对上一层组装模块,比较好的找到缺陷的位置 (传统瀑布式)
4、核心系统集成 多用于敏捷开发
5、高频集成 多用于敏捷开发
集成测试VS测试
1、测试对象不同
单元:以最小单元为测试对象
集成:以模块和子系统为单元进行测试,测试模块间接口的关系
2、测试依据不同
单元:依据详细设计进行测试
集成:针对概要设计
3、测试方法不同
集成:关注接口的集成
单元:只关心单元内部
集成&单元 一般使用模拟环境来测试
三、系统测试多用真实环境来进行测试
系统测试包括内容:
性能测试、功能测试和稳定性测试等 多种类型测试,企业内专职测试人员一般主要用于系统测试阶段
系统测试人员主要关注点:
测试相关流程、测试方法、各个阶段的输入输出条件,和测试当中需要注意的问题
系统测试的关注点:
1系统本身的使用,功能上关注使用
2关注系统与其它相关系统间的连通性
3关注系统在不同使用压力下的表现:大并发量,权限情况,cpu内存在达到权限情况下的系统表现
4关注系统在真实使用环境下的表现
系统测试 vs 集成测试
1、测试对象不同
集成:是由通过了单元测试的各个模块所集成起来的组件
系统测试:除了软件之外,还包括计算机硬件及相关的外围设备、数据采集和传输机构、支持软件、系统操作人员等整个系统
2、测试时间
集成:介于单元测试与系统测试之间
系统测试:在集成测试之后
3、测试内容
集成:测试各个单元模块之间的接口
系统:整个系统的功能和性能
4、测试角度:
集成:偏于技术
系统:偏于业务
四、
验收测试
正式的测试 ,由用户决定是否要交付
细分:
用户验收测试(开发方)
运行验收测试(运维层面出发验证是否系统可以正常运行)
例如上线后的备份 容灾 灾难恢复等场景是否正确
合同和规范验收测试 合同、政府和法律法规
alpha 测试 场所和环境由开发方提供,用户执行
beta 测试 用户提供的场所和环境来进行测试
realise 版本 正式可供交付的版本
A TDD验收测试驱动开发:开发前先定义好用户故事,再开发用户功能代码