单元测试(unit testing):
单元测试又称模块测试,针对软件设计中的最小单位--程序模块,进行正确性检查的测试工作。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地进行单元测试
单元定义:C中指一个函数,Java中指一个类,在图形化的软件中,单元一般指1个窗口,1个菜单
- 什么时候进行?编码后,编译通过后进行
- 由谁来做?白盒测试工程师或者开发工程师,最好不要自己做自己代码的测试
- 单元测试的依据?源代码(代码+注释)+《详细设计文档》
- 单元测试的通过标准?程序通过所有单元测试用例,语句覆盖率达到100%,分支覆盖率达到85%
- 如何进行单元测试?单元测试主要用白盒测试,先静态检查代码是否符合规范,然后动态运行代码,检查其实际运行结果,检查程序的运行结果是否正确是一个最基本的要求,还要关注容错处理,程序的边界值处理等
集成测试(integration testing):
集成测试又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增的测试。重点测试不同模块的接口部分
- 什么时候进行?单元测试&集成测试同步进行,理论上先有单元测试
- 由谁来做?白盒测试工程师或者开发工程师
- 集成测试依据?单元测试的模块+《概要设计》文档
系统测试(system testing):
指的是将整个软件系统看为一个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。
目前系统测试主要由黑盒测试工程师在系统集成完毕后进行测试,前期主要测试系统的功能是否满足需求,后期主要测试系统运行的性能是否满足需求,以及系统在不同的软硬件环境中的兼容性等。
验收测试(acceptance testing):
验收测试指按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。在系统测试的后期,以用户测试为主或有测试人员等质量保证人员共同参与的测试
- α测试:指的是由用户,测试人员,开发人员等共同参与的内部测试
- β测试:指的是内侧后的公测,即完全交给最终用户测试
静态测试(static testing):
是指不实际运行被测试软件,而只是静态地检查程序代码,界面或文档中可能存在的错误过程
- 代码测试:主要测试代码是否符合相应的标准和规范
- 界面测试:主要测试软件的实际界面与需求中的说明是否相符
- 文档测试:主要测试用户手册和需求说明是否真正符合用户的实际需求
动态测试(dynamic testing):
是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程
- 动态测试方法为结构和正确性测试
黑盒测试(black-box testing):
指的是把被测的软件看作一个黑盒子,我们不关心黑子里面的结构是什么样子的,只关心软件的输入数据和输出数据
白盒测试(white-box testing):
指的是把黑子打开,去研究里面的源代码和程序结构
功能测试(function testing):
是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。
- 逻辑功能测试(function testing)
- 界面测试(UI testing)
- 易用性测试(usability testing)
- 安装测试(installation testing)
- 兼容性测试(compatibility testing)
性能测试(performance testing):
是软件测试的高端领域,性能测试工程师的待遇和白盒测试工程师不相上下,通常我们所说的高级软件测试工程师一般是指性能测试或是白盒测试工程师
- 时间性能(事务响应时间等)
- 空间性能(系统资源消耗)
- 一般性能测试
- 可靠性测试
- 负载测试
- 压力测试
回归测试(regression testing):
是指软件被修改后重新进行的测试,如重复执行上一个版本测试时的用例,是为了保证对软件所做的修改没有引入新的错误而重新进行的测试
冒烟测试(smoke testing):
是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测试性
随机测试(random testing):
是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误