软件测试基础

 

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框多个取消按钮

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @   尼古拉斯--铁柱  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示