软件测试基础
1、主流技术:
- 功能测试
- 自动化测试
- 接口测试 工具实现、代码实现
- 性能测试 工具实现、代码实现
- (安全测试)
白盒测试:语句覆盖、分支(判定)覆盖、条件覆盖、判定条件覆盖、组合覆盖、路径覆盖
- 语句覆盖:保证程序的每个语句至少执行一次
- 分支(判定)覆盖:每个判断取真假至少一次
- 条件覆盖:每个条件至少真值和假值(不考虑组合情况)
- 判定条件覆盖:判断中每个条件所有的可能取值至少执行一次(条件覆盖),同时每个判断本身所有的结果也要至少执行一次(判定覆盖)
- 组合覆盖(条件组合覆盖):每个判定中的各个条件的各种可能组合都至少出现一次,覆盖度高测试用例多
- 路径覆盖:覆盖程序所有可能的路径。测试用例增多很多,实际可操作性不强。
2、测试分类:
- 单元测试:针对程序源代码进行测试
- 集成测试:又称接口测试,对模块之间的访问地址进行测试
- 系统测试:对整个系统进行测试,包括功能、兼容、文档测试。
- 验收测试:主要分为内测、公测,使用不同的人群发发掘项目缺陷。
3、测试 质量模型:
衡量一个优秀软件的维度包括:
- 功能性:需求功能验证、错误处理
- 性能:例 测试服务器每秒处理请求数、服务器硬件是否满足
- 兼容性:各种浏览器、操作系统、手机是否使用
- 易用性:界面 简洁、友好、流畅、美观
- 可靠性:出现无响应、卡顿、死机
- 安全性:信息传输存储时考虑传输加密
- 可维护性:代码有条理、注释到位
- 可移植性:网站数据迁移(例如用户量增多的时候需要搬服务器,是否容易配置)
4、测试流程
- 需求评审:确保各部门需求理解一致
- 计划编写:测什么、谁来测、怎么测
- 用例设计:验证项目是否符合需求的操作文档
- 用例执行:项目模块开发完成开始执行用例文档实施测试
- 缺陷管理:对缺陷进行管理的过程
- 测试报告:实施测试结果文档
5、测试用例
作用:防止漏测、实施测试的标准
编写格式:
- 用例编号、项目-模块-编号
- 用例标题、预期结果(测试点)
- 项目/模块、所属项目或模块
- 优先级、重要程度或影响力P0-P4(P0最高)
- 前置条件、
- 测试步骤、
- 测试数据、没有的话可以为空
- 预期结果:
6、登录测试
测试点:正常、异常、并发、兼容性、美观度。
7、测试方法
- 等价类划分法:在所有测试数据中,具有某种共同特征的数据集合急性划分。分为有效等价类、无效等价类。
- 边界值分析法:
- 判定表法(用于多个输入条件):一种以表格形式表达多条件逻辑判断的工具
- 场景法:流程图
- 错误推测法:通过经验推测系统可能出现的问题
8、缺陷
- 缺陷判定标准:主要根据需求(规格)说明书
- 缺陷管理流程:
- 缺陷核心内容:标题、预置条件、缺陷复现步骤、预期结果、缺陷实际结果、、必要附件(证据)
- 缺陷提交:指派人、优先级、类型
- 提交要素:缺陷报告编号、严重程度、缺陷优先级、bug类型、缺陷状态。
- 能够使用excel对于缺陷进行管理
- 能使用工具管理缺陷:禅道
9、后端自动化测试(代码、工具)
9.1 RestNG入门
9.1.1 TEST注解
9.1.2 testng.xml 按照指定顺序执行要测试的代码
9.1.3 before、after注解执行顺序:
9.1.4 TestNg传递参数:Parameters注解、DataProvider注解
parameter适合简单参数传递,需要从xml开始运行
DataProvider注解
9.2 OKHttp框架入门:有效执行http可以使内容加载更快并且节省带宽 和httpclient差不多 效率更高
官网:https://square.github.io/okhttp/
发送get请求示例:
发送post请求示例:
9.3 Elastic Stack
9.3.1 Elasticsearch:搜索引擎
9.3.2 Kibana 图形化界面
9.4 dubbo 阿里巴巴分布式的服务框架
9.5 JUnit 5
9.5.1 @DisplayName 命名测试用例别名 例如@DisplayName("测试用例名称")
9.5.2 使用Assertions类的断言方法
- assertEquals 判断是否相等
- assertTrue
- assertNotNull
- assertAll
- assertThrows
9.5.3 @BeforeEach @AfterEach 在每个测试用例执行的前后执行
@BeforeAll 和AfterAll 在所有用例执行前后只执行一次
9.5.4 参数化用例
简单参数化 @ValueSource
1、参数化用例的时候使用的注解由@Test换成@ParamterizesTest
2、传递测试数据,使用@ValueSource定义的关键字进行类型的声明
3、在测试方法上添加形参,接受参数化的数据
多参数的参数化 @CsvSource
默认用逗号分隔 可以使用delimiterString指定分隔符
CsvFile的参数化@CsvFileSource
1、新建数据文件
data.csv使用,分隔的
data2.csv使用|分隔的
也可以使用delimiterString指定分隔符
9.5.4 参数化用例(二)
@MethodSource参数化
@MethodSource如果不加参数默认会找和测试方法同名的静态方法
多参数使用示例:
9.5.4 参数化用例(三)
枚举参数的参数化
需要添加@EnumSource注解
可以使用names指定范围,可以使用正则表达式进行匹配
特殊参数的参数化
验证传空或者null
使用@NullSource传递null、@EmptySource传递空白、@NullAndEmptySource
9.5.5 超时处理 @Timeout(指定参数 默认以秒为单位)
如果用例执行超时则认为失败
可以修改单位
9.5.6 显示名称 @DisplayName
DisplayName生成器配置 两种方式
例如@DisplayNameGeneration(DisplayNameGenerator.Simple.class)
可以全局配置
配置方式如下,具体配置可以参考官方文档
9.5.7 嵌套测试
使用@Nested 结合class使用 需要与测试用例结合
9.5.7 执行顺序
设定排序方式 @TestMethodOrder(MethodOrder.参数类型如下) 需要结合@Order(参数)使用
示例:
9.5.8 重复测试
@RepeatedTest(执行次数) 如果加上@Test注解会多执行一次
9.5.9 标记测试用例
例如:@Tag("dev") 可以加多个标签
9.5.10 设置禁用测试用例
在bug未解决之前不执行,IDEA不支持maven构建才支持
9.5.11 Allure 测试报告工具 可以集成到Jenkins
安装:1、安装java 2、安装Allure 需要配置环境变量
常用命令:
用法:
9.6 .web自动化测试 selenium IDE
9.6.1 安装及运行:
https://blog.csdn.net/weixin_44107321/article/details/106452468
版本对照大全:http://www.noobyard.com/article/p-aefhphwt-s.html
chrome浏览器各个版本安装包下载地址
https://www.chromedownloads.net/chrome64win/
chrome浏览器的webdriver驱动下载地址
https://registry.npmmirror.com/binary.html?path=chromedriver/
mac电脑如果出现运行失败,执行以下命令
cd /usr/local/bin/
xattr -d com.apple.quarantine chromedriver
如果缺少方法添加依赖
1 2 3 4 5 | < dependency > < groupId >com.google.guava</ groupId > < artifactId >guava</ artifactId > < version >31.0.1-jre</ version > </ dependency > |
selenium使用
9.6.2基本元素定位
注意项:tagname使用较少有重名,className属性值可能不固定 复合类名可能报错
1 2 | //参数为超链接的完整文本内容 chromedriver.findElement(By.linkText("新闻")).click();< br >//也可使用部分值< br >chromedriver.findElement(By.partialLinkText("闻")).click(); |
chromedriver.findElement(By.cssSelector("input[maxlength='255'][autocomplete='off']")).sendKeys("腾讯课堂");
多个条件使用and连接
9.6.3 元素操作常用api
* 9.6.4 WebDriver常用API
.maximize()窗口最大化;
getSize();获取窗口大小参数
9.6.5 元素三大特性:硬性等待、隐式等待、显示等待
硬性等待:Thread.sleep(xxx);毫秒单位
9.6.6 特殊元素操作
弹出框:confirm框多个取消按钮
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)