软件测试
第一章
软件的定义
- 与数据处理系统的操作有关的计算机程序、过程、规则和有关的文件集的综合
- =程序+数据+文档+服务
软件测试定义
- 使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别
软件测试的目的
- 发现错误而执行程序的过程
- 测试是为了证明程序有错
- 一个好的测试用例在于发现至今未被发现的错误
- 一个成功的测试是发现至今未被发现的错误的测试
软件测试分类
- 阶段划分- 单元测试- 集成测试- 确认测试- 系统测试- 验收测试
- 技术划分- 黑盒测试- 白盒测试- 灰盒测试
- 执行状态- 静态测试- 动态测试
- 其他测试- 冒烟测试- 回归测试- 随机测试- 驱动测试
软件测试过程模型
- V模型
- W模型
- X模型
- H模型
第二章
软件测试流程
- 测试需求分析
- 编写测试计划
- 编写测试用例
- 测试执行
- 缺陷记录
- 缺陷跟踪
- 编写测试报告
质量模型
- 功能性
- 可靠性
- 易用性
- 性能效率
- 兼容性
- 安全性
- 可维护性
- 可移植性
软件测试计划六要素
- Why-说明为什么要进行这些测试
- what-测试那些方面不同阶段的内容
- when-测试不同阶段的起止时间
- where-相关文档和缺陷文档存放位置、测试环境
- who–测试项目相关人员组成
- how-如何去做,使用那些测试工具或方法
软件测试环境
- 硬件
- 软件
- 网络
- 历史数据
- 测试工具
软件测试用例
- 标识符
- 项目名称
- 程序版本
- 编制人
- 编制时间
- 功能模块名称
- 测试项
- 测试目的
- 预置条件
- 参考文献
- 测试环境
- 测试输入
- 操作步骤
- 预期结果
- 执行结果
第四章
软件测试管理原则
- 始终把质量放在第一位
- 可靠的需求
- 尽量留出足够的时间
- 足够重视测试计划
- 适当引入测试自动化或测试工具
- 建立独立的测试环境
- 通用项目管理原则
软件测试文档
- 测试计划表
- 测试设计规格说明书
- 测试用例说明书
- 测试规程说明书
- 测试日志
- 测试缺陷报告
- 测试总结报告
项目测试具体流程
- 单元测试- 最小代码单元,开发人员,白盒测试
- 集成测试- 模块间的接口,开发人员,灰盒测试
- 冒烟测试- 系统基本功能,黑盒测试员,黑盒测试
- 系统测试- 整个系统,黑盒测试员,黑盒测试
- 回归测试- 整个系统,黑盒测试员,黑盒测试
- 验收测试- 验收单上的内容,最终用户,黑盒测试
第三章
软件缺陷的定义
- 系统所需实现的某种功能的失效或违背
软件缺陷严重性分类
- 致命的
- 严重的
- 一般的
- 次要的
- 提示的
软件缺陷的生命周期
- 测试人员new/validate/reopen/closed
- 测试经理 open/Abandon
- 开发经理 Assign/postpone
- 开发人员 fixed
软件缺陷报告内容
- 缺陷编号
- 预置条件
- 缺陷标题
- 测试步骤
- 严重程度
- 优先级
- 重现率
- 缺陷状态
- 附件
黑盒测试方法
等价类划分法
- 分类- 有效等价类- 无效等价类
- 原则- 输入条件规定取值范围或值的个数,可以确定一个有效等价类和两个无效等价类- 输入条件规定了输入值的集合,则可以确定一个有效等价类和一个无效等价类- 输入条件是一个布尔值的情况下,可确定一个有效等价类和一个无效等价类- 输入数据必须遵守的规则情况下,可确立一个有效等价类和若干个无效等价类
边界值分析法
- 上点:边界上的点
- 离点:离边界最近的点
- 内点:取值域内的任意一点
因果图法
- 符号- CI:原因- EI:结果- 恒等- 非∽- 或∨- 且∧
- 约束关系- E:互斥,exclude- I:包含,include- O:唯一,only- R:要求,require- M:屏蔽,mask
决策表法
- 定义- 一种通过表格的方式来将复杂逻辑关系和多条件组合情况表达得较为明确的方法
- 组成部分- 条件桩- 条件项- 动作桩- 动作项
场景法
- 基本流- 经过用例的最简单的路径。即无任何差错,程序从开始直接执行到结束的流程- 一个业务仅存在一个基本流,且基本流仅有一个起点和一个终点
- 备选流- 每个经过用例的可能路径,除基本流外的其他支流
错误推测法
- 在测试程序时,测试人员可以根据经验或直觉推测程序中可能存在的各种错误,进而有针对性地编写检查这些错误的测试用例的方法
正交实验法
- 定义- 利用排列整齐的表-正交表来对实验进行整体设计、综合比较、统计分析,实现通过少数的实验次数找到较好的生产条件,以达到最好的效果
- 步骤- 确定因素数- 确定因素的水平数- 选择对应的正交表
- 正交表(Ln(m^k))- m是水平数- K是因素数- n是行数
其他测试法
- 界面测试
- 易用性测试
- 安装测试
测试用例设计方法的基本原则
- 首先检查界面元素的显示是否正确
- 表单测试,需要依据表单里面的每个字段依次进行测试。凡是用户可输入的输入域,都要使用等价类和边界值法设计
- 多个字段之间有关联关系和制约关系,使用因果图法或判定表等测试方法进行组合的测试
- 单个页面的内容都测试完毕后,再来结合场景法测试流程相关的内容。
- 流程分析测试完后,最后再使用错误猜测法来确保没有遗漏的测试点
- 最后使用正交试验法来设计参数配置类及兼容性的测试
自动化测试
web自动化测试
- 定义- 自动化测试就是把人对软件的测试行为转化为由机器执行测试行为的一种实践,对于最常见的GUI自动化测试来讲,就是由自动化测试模拟之前需要人工在软件界面上的各种操作,并自动验证其结果是否符合预期
- 优点- 节省人力- 节省时间- 优化资源分配- 极大提高效率- 增加软件的可信度- 能完成手工不易控制的工作
- 使用范围- 核心业务- 流程测试- 回归测试- 重复执行率高的
web自动化工具Selenium
- 产品分类- Selenium IDE- 优点- 简单易用,很容易上手操作- 可以快速的录制和回放各种操作,容易形成测试- 可以很方便把操作导出成为各种语言的测试脚本- Selenium Grid- 并行运行多个测试用例在不同的浏览器、操作系统和机器上- Selenium WebDriver- 三元素- 自动化测试代码- WebDriver驱动- 浏览器- 工作流程- 实例化webDriver- 确定浏览器版本信息- 在浏览器里启动WebService- 通过HTTP请求发送请求到服务器- 执行请求操作浏览器- 返回一个带有json文件的Response- 支持的浏览器- Firefox浏览器驱动- Chrome浏览器驱动- IE浏览器驱动- Edge浏览器驱动- Opera浏览器驱动
- Love四步法- 元素定位Locate- 元素操作Operate- 结果断言Verify- 异常处理Except
- 常用API- driver.get(url)- driver.quit()- driver.close()- driver…getPageSource- driver.getTitle- driver.getCurrentUrl-- driver.getWindowHandle- driver.getWindowHandles
- 元素定位- 方法- driver.findElement()- driver.findElements()- 定位方式- ID- Name- ClassName- Tag Name- Link text- Partial link text- cssSelector- Xpath- 绝对路径–从根开始/- 相对路径- // —匹配指定节点- - —通配符,匹配任意元素节点- @—选取属性- []—属性判断条件表达式
- 元素操作- click() -----点击(适合于任何元素)- sendKeys()----发送键位(仅适合文本字段和内容可编辑元素)- clear()----清除(仅适合文本字段和内容可编辑元素)
- 三种等待方式- 显示等待- 等待某个条件成立时继续执行,否则到达最大时长时抛出异常- 隐式等待- 设置的超时时间范围内不断查找元素,直到找到元素或者超时抛出异常- 强制等待- 使用Thread.Sleep()方法,无论前面的代码是否执行完成或者还未完成,都必须等待设定的时间
- 特殊处理元素- 弹出框- frame切换- Window切换- 下拉框- 鼠标操作- 时间日期控件- 验证码
单元测试
- 定义- 对软件最基本的组成单元进行的测试,是编码完成后必须进行的测试工作
- 工具- JUnit- 注解- @Test- @Before- @After- @BeforeClass- @AfterClass- @Ignore- 断言- assertEquals()- assertNull()- assertTrue()- TestNG- 注解- @BeforeSuite- @BeforeTest- @BeforeMethod- @AfterSuite- @AfterTest- @AfterMethod- @Test- @BeforeClass- @AfterClass- 优势- TestNG支持并行,可以使用XML配置文件,同时配置相比较Junit更加灵活
Allure框架
- 定义- 一个灵活的轻量级多语言测试报告工具,它不仅以简洁的 Web 报告形式非常简洁地展示了已测试的内容,而且允许参与开发过程的每个人从日常执行中提取最大的有用信息测试
- 常用命令- allure --help- allure --version- allure serve- allure generate
- 注解- @Feature- @Story- @DisplayName- @Issue- @Description- @Step- @Serverity- @Link
性能测试
接口
- 计算机系统中两个独立的部件进行信息交换的共享边界
HTTP协议
- Request请求- 请求头- Accept:application/json 客户端接收的数据格式- X-Request-with:异步请求- User-Agent:客户端的类型- Content-Type:客户端发送的数据类型- Cookie:服务器返回给客户端并且保存的Cookie信息
- Response响应- 状态码- 200—成功- 404—资源找不到- 500—服务器异常- 302—重定向
接口文档内容
- 接口说明
- 调用url路径
- 请求方式(get/post)
- 请求参数、参数类型、请求参数说明
- 返回参数说明
接口测试要点
- 检查接口返回的数据是否与预期结果一致
- 接口测试结果检查通常需要通过SQL语句从数据库内进行查询确认
- 检查接口的容错性,传递数据的类型错误是否可以处理
- 接口参数的边界值
- 接口的性能,http请求接口与后端执行的SQL语句性能、算法有关
- 接口的安全性,外部调用接口尤为重要,每一个接口都要进行鉴权验证
性能测试
- 定义- 通过自动化测试工具或代码手段,来模拟正常、峰值负载访问被测试的系统,并观察系统各项性能指标是否合格的测试过程
- 测试内容- 负载测试- 压力测试- 容量测试- 基准测试- 配置测试- 疲劳测试
- 测试指标- 响应时间- 吞吐量- 资源利用率- TPS(事务处理系统)
Jmeter测试工具
- 作用- 接口测试和性能测试
- 组件- 测试计划-jmeter的起点和容器- 线程组-代表一定的虚拟用户- 取样器-发送请求的最小单元- 逻辑控制器-控制组件的执行顺序- 前置处理器-在请求之前的操作- 后置处理器-在请求之后的操作- 断言-判断请求是否成功- 定时器-是否延迟或间隔发送请求- 配置元件-提供静态数据的支持- 监听器-负责收集测试结果- 测试片段-封装基本功能的代码段,需要脚本进行调用
- 组件作用域- 取样器是核心- 逻辑控制器只对它子节点中的取样器和逻辑控制器起作用- 其他元件:如果父节点是取样器,该元件对父子节点起作用;如果父节点不是取样器,作用域是该父节点下所有的后代节点
标签:
测试工具
本文转载自: https://blog.csdn.net/qq_44672308/article/details/125464622
版权归原作者 一个学Java小白 所有, 如有侵权,请联系我们删除。
版权归原作者 一个学Java小白 所有, 如有侵权,请联系我们删除。