- 本文主要介绍软件测试、软件自动化测试相关概念和工具。
#软件测试分类
根据项目流程划分
单元测试(模块测试)
- 子程序或具有独立功能代码块
集成测试
- 先组成系统或子系统再测试,重点检查模块间的接口
系统测试
- 整个产品系统(需求说明书)
验收测试
- 最终测试(完成系统和功能测试后,产品发布之前的测试)(验证功能和性能)
- 最终测试(完成系统和功能测试后,产品发布之前的测试)(验证功能和性能)
按照对代码可见度来划分
- 白盒测试
- 关注内部动作
- 黑盒测试
- 关注外部输入输出
- 灰盒测试
- 既关注外部输入输出又关注内部动作。
- 既关注外部输入输出又关注内部动作。
- 白盒测试
软件的不同测试面来划分
- 功能测试
- 逻辑功能测试,界面测试,易用性测试,安装测试,兼容性测试等。
- 性能测试
- 时间性能(具体环境)
- 空间性能(带宽,CPU)
- 功能测试
按照自动化程度划分
- 手工测试
- 自动化测试
- 功能自动化和性能自动化
- 功能自动化和性能自动化
测试周期中的一些方法
- 冒烟测试
- 测试新版本之前,投入较少人力和时间验证软件主要功能。
- 回归测试
- 修改了旧代码后,重新进行测试以确定修改没有引入新错误或导致其他代码产生错误。(第二轮)
- 随机测试
- 测试输入数据随机生成,目的是模拟用户真实操作,发现边缘错误。
- 探索性测试
- 测试的思维技术,一种思维方式,强调测试人员主观能动性,遇到问题时改变测试策略。
- 安全测试
- 生命周期中特别是开发基本完成到发布阶段,对产品验证符合产品安全需求定义和质量标准的过程
- 冒烟测试
#分层的自动化测试
背景
- 传统的自动化测试:
- 基于产品的UI的自动化测试,将黑盒测试转化为通过程序或工具执行的一种自动化测试。
- 传统的自动化测试缺点(黑盒测试环节尽可能全面覆盖,自动化)
- 测试规模增大
- 全面UI自动化测试(由于UI易变,使得UI维护成本相对高昂)
- 传统的自动化测试:
分层自动化测试
强调从黑盒(UI)单层到黑白盒多层的自动化测试体系
从全面黑盒自动化测试到对系统的不同层次进行自动化测试
单元自动化测试(10%)
- 对软件中的最小可测试单元检查和验证。(类,函数,窗口)
- 对软件中的最小可测试单元检查和验证。(类,函数,窗口)
接口自动化测试(20%)
- 模块接口测试和Web接口测试
- 模块接口测试(单元测试基础 -> 单元结果验证)
- 工具与单元自动化测试相同
- Web接口测试
- 服务器接口测试和外部接口测试
- 模块接口测试(单元测试基础 -> 单元结果验证)
- 服务器接口测试
- 浏览器与服务器的接口(通过HTTP协议实现前后端数据传递)
- 外部接口测试(70%)
- 第三方系统提供的接口(第三方登录接口)
- 接口测试相应的类库和工具: HttpUnit 、Postman
- 模块接口测试和Web接口测试
UI自动化测试
- 由于所有功能的展示都在这一层,所以测试工作大多集中在这一层。
- 因此建议提倡半自动化开展测试工作。
#自动化测试应用场景
- 一般满足以下三个条件就可开展自动化测试
- 软件需求变动不频繁
- 项目的周期长
- 自动化测试脚本可重复利用
- 任务测试明确,不会频繁变动(重要)
- 每日构建后的测试验证
- 比较频繁的回归测试
- 软件系统界面稳定,变动少
- 需要在多个平台上运行相同的测试案例、组合遍历型的测试、大量重复的任务。
- 软件维护的周期长(重要)
- 项目的进度压力不大。
- 被测软件系统开发较为规范,能够保证系统可测试性。
- 具备大量自动化测试平台。
- 测试人员具备较强的编程能力。
- 自动化测试脚本可重复利用(重要)
#自动化测试及其工具
广义上的自动化测试:指的是借助工具来辅助进行软件测试的方式
狭义上的自动化测试:指的是基于UI的功能测试
自动化测试工具
- UFT(QTP和ST合并)
- Robot FrameWork(基于python)
- Watir(基于ruby)
- selenium
#Selenium工具介绍
Selenium工具介绍
- 主要用于Web应用程序的自动化测试
Selenium IDE
- 火狐插件,方便开发脚本
Selenium Grid
- 自动化测试辅助工具可加快Web-App功能测试,很方便在对台机器和异构环境执行测试用例(不同计算机和系统的网络环境)
Selenium RC
- Selenium家族核心部分,支持多种语言编写的自动化测试脚本。
Selenium2.0
- Selenium1.0 = Selenium IDE+Selenium Grid+Selenium RC
- Selenium2.0 = Selenium 1.0 +WebDirver
- Selenium3.0
- WebDriver是通过原生的浏览器支持或浏览器扩展来直接控制浏览器
- WebDriver能利用操作系统级别调用,能够更好模拟用户输入。
#前端基础(补充)
- 基础知识
- HTMl 超文本标记语言
- JavaScript 前端脚本语言(轻量级语言),是一种解释性的语言,不需要预编译
- XML 可扩展标记语言 通用标记语言的一个子集。作为传输工具和存储数据。(数据内容)
- 前端工具
- Fire Bug 火狐开发类插件
- FirePath XPath(XML的路径语言,用来确定XML文档中的部分位置)
- Chrome开发人员工具