1.1 软件测试分类
1.根据项目流程阶段划分软件测试
- 单元测试:单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码进行测试的过程。
- 集成测试:集成测试是在单元测试的基础上,先通过单元模块组成系统或子系统,再进行测试。重点是检查模块之间的借口是否正确。
- 系统测试:系统测试是针对整个产品系统进行的测试,验证系统是否满足需求规格的定义,以及软件系统的正确性和性能等是否满足其需求规格的要求。
- 验收测试:验收测试是部署软件之前的最后一个测试阶段。验收测试的目的是确保软件准备就绪,向软件购买者展示该软件系统能够满足用户的需求。
2.白盒测试、黑盒测试、灰盒测试(主要是根据软件测试工作中对软件代码的可见程度进行划分)
- 黑盒测试指的是把被测的软件看作一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果。 它只检查程序呈现给用户的功能是否按照需求规格说明书的规定正常使用、程序是否能接收输入数据并产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
白盒测试,指的是把盒子打开,去研究里面的源代码和程序执行结果。 它是按照程序的内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条逻辑路径是否都能够按预定要求正确工作。
灰盒测试,介于黑盒测试和白盒测试之间。
3.功能测试与性能测试
- 功能测试,功能测试主要检查实际功能是否符合用户的需求。功能测试又可以分为很多种:逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试等
- 性能测试,是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件对系统的各项性能指标进行的测试。主要包括时间性能和空间性能。
4.手工测试和自动化测试
- 手工测试就是由测试人员一个一个地去执行测试用例,通过键盘鼠标等输入一些参数,并查看返回结果是否符合预期结果。
- 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。又分为功能性自动化测试和性能自动化测试。
5.冒烟测试、回归测试、随机测试、探索性测试和安全测试
- 冒烟测试,是指对一个新版本进行大规模的系统测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。
- 回归测试是指修改了旧代码之后,重新进行测试以确认修改后没有引入新的错误或导致其他代码产生错误。
- 随机测试,是指测试中的所有输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
- 探索性测试,是一种测试思维技术。强调在碰到问题时及时改变测试策略。
- 安全测试,是在IT软件产品的生命周期中,特别是产品开发基本完成至发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。
1.2 分层的自动化测试
- 单元自动化测试
- 接口自动化测试
- UI自动化测试
1.3 什么样的项目适合自动化测试
- 任务测试明确,不会明确变动
- 每日构建后的测试验证
- 比较频繁的回归测试
- 软件系统界面稳定,变动少
- 需要在多平台上运行的相同测试案例、组合遍历型的测试,大量的重复任务
- 软件维护周期长
- 项目进度压力不太大
- 被测软件系统开发较为规范,能够保证系统的可测试性
- 具备大量的自动化测试平台
- 测试人员具备较强的编程能力
并非以上10个条件都满足才能进行自动化测试,一般只需满足一下三个条件就可以对其进行自动化测试:
- 软件需求变动不频繁
- 项目周期较长
- 自动化测试脚本可重复使用
1.4 自动化测试及工具简介
自动化测试的概念有广义和狭义之分:广义上来讲,所有借助工具来辅助进行软件测试的方式都可以称为自动化测试;狭义上来讲,主要是指基于UI蹭的功能自动化测试。常见的自动化测试工具有: - UFT(Unified Functional Testing)—最主流
- Robot Framework(基于python,强大)
- Watir(Web Application Testing in Ruby)
- Selenium(多平台,广泛应用)
1.5 selenium工具介绍
1.什么是selenium?
selenium主要用于web应用程序的自动化测试,但并不局限于此,它还支持所有基于web的管理任务自动化。
selenium的特点如下:
- 开源,免费;
- 多浏览器支持:Firefox,Chrome,IE,Opera,Edge;
- 多平台支持:Linux,Windows,MAC;
- 多语言支持:Java,python,Ruby,C#,JavaScript,C++;
- 对web页面有良好的支持;
- 简单(API简单)、灵活(用于开发语言驱动);
- 支持分布式测试用例执行。