软件测试进阶

目录

一、自动化测试

1.概念

2.Selenium

2.1 概念

2.1.1 Selenium是什么?

2.1.2 Selenium特点

2.1.3 工作原理

2.2 Selenium+Java环境搭配

2.3 定位元素

2.3.1 CSS语法

2.3.2 XPath语法

2.4 应用

2.4.1 点击提交文本

2.4.2 模拟输入

2.4.3 清除文本

2.4.4 获取文本信息

2.4.5 等待

2.4.5.1 sleep强制等待

2.4.5.2 隐式等待

2.4.5.3 显示等待

2.4.6 获取标题

2.4.7 获取url

2.4.8 浏览器操作

2.4.9 切换页面

2.4.10 键盘事件

2.4.11 鼠标事件

2.4.12 多层窗口

2.4.13 下拉框

2.4.14 alert弹窗

2.4.15 上传文件

2.4.16 截图

3.Junit

3.1 概念

3.2 配置

3.3 应用

3.3.1 @Test

3.3.2 @Disabled

3.3.3 @BeforeAll,@AfterAll,@BeforeEach,@AfterEach

3.4 参数化

3.4.1 单参数、CSV获取参数、方法获取参数、多参数

3.4.2 执行顺序

3.4.2.1 @Order(第几个执行)

3.4.2.2 测试顺序随机

3.4.3 断言

3.5 测试套件

二、性能测试

1.概念

1.1 什么是性能测试

1.2 影响一个软件性能因素

1.3 性能测试常见的术语和性能测试衡量指标

1.3.1 并发

1.3.2 用户

1.3.3 响应时间

1.3.3.1 用户响应时间

1.3.3.2 请求响应时间

1.3.3.3 事务响应时间

1.3.4 每秒事务通过数量

1.3.5 点击量

1.3.6 点击率

1.3.7 吞吐量

1.3.8 吞吐率

1.3.9 思考时间

1.3.10 资源利用率

1.4 性能分类

1.4.1 基准性能测试

1.4.2 负载性能测试

1.4.3 压力性能测试

1.4.4 可靠性能测试

1.5 性能测试执行流程

1.6 LoadRunner


一、自动化测试

1.概念

什么是自动化测试?

自动化测试就相当于人工测试的手段进行转换,让代码去执行

自动化测试的分类有哪些?

单元测试、接口测试、UI自动化测试

2.Selenium

2.1 概念

2.1.1 Selenium是什么?

是用来做Web自动化测试框架

2.1.2 Selenium特点

支持各种浏览器,支持各种平台,支持各种语言(Python,Java,C#......),有丰富的api

2.1.3 工作原理

2.2 Selenium+Java环境搭配

需要下载浏览器对于的,放在c盘对应的目录下

在idea中pom文件中需要引入依赖

2.3 定位元素

定位元素的方法有很多,这里只讲述两种,CSS和XPATH

定位元素findElement

2.3.1 CSS语法

id选择器:#id

类选择器:.c

2.3.2 XPath语法

绝对路径:从根开始 /html/……. (不建议使用)

相对路径://

相对路径+索引: //from/span[2]/input

相对路径+属性值://input[@class="s_ipt" and @id=""]

相对路径+通配符://*[@*="su"]

相对路径+文本匹配: //a[text()="新闻"]

2.4 应用

2.4.1 点击提交文本

click()

2.4.2 模拟输入

sendKeys("")

2.4.3 清除文本

要清除文本的前提是输入文本

2.4.4 获取文本信息

getText()

2.4.5 等待
2.4.5.1 sleep强制等待

如果等待的时间为3天,强制等待则一定会等待三天

2.4.5.2 隐式等待

隐式等待在达到预期效果后就不会等待了,但是前提是将页面上所有的元素都加载出来。在等待结束之前,没有加载出全部元素,就会报错。

2.4.5.3 显示等待

显示等待不需要加载出全部元素,只要所需要的元素达到预期,就结束等待。

2.4.6 获取标题

getTitle()

2.4.7 获取url

getCurrentUrl()

2.4.8 浏览器操作

1.浏览器前进

2.浏览器后退

3.浏览器滚动条

4.浏览器大小

关闭浏览器

quit直接直接关闭整个浏览器,清空缓存

close只关闭webdriver窗口,不会清空缓存

2.4.9 切换页面

2.4.10 键盘事件

2.4.11 鼠标事件

2.4.12 多层窗口

2.4.13 下拉框

2.4.14 alert弹窗

2.4.15 上传文件

2.4.16 截图

需要提前引入依赖

3.Junit

3.1 概念

Selenium自动化测试框架

Junit单元测试框架

Junit控制Selenium

Junit是针对Java的一个单元测试框架

利用注解

3.2 配置

前提是引入依赖,才能引入注解

3.3 应用

3.3.1 @Test

表示当前的方法是一个测试用例

3.3.2 @Disabled

表示这个测试用例不跑,跳过,忽略

3.3.3 @BeforeAll,@AfterAll,@BeforeEach,@AfterEach

BeforeAll是在所有的测试用例运行之前跑对应的方法

BeforeEach是在每个测试用例用例之前跑对应的方法(有几个测试用例就跑几次)

AfterAll是在所有的测试用例运行之后跑对应的方法

AfterEach是在每个测试用例用例之后跑对应的方法(有几个测试用例就跑几次)

3.4 参数化

前提也得引入依赖

3.4.1 单参数、CSV获取参数、方法获取参数、多参数

3.4.2 执行顺序

Junit有自己的测试顺序,如果想改正,需要手动设置

3.4.2.1 @Order(第几个执行)

注意一定也得写@TestMethodOrder(MethodOrderer.OrderAnnotation.class)告诉不需要按照顺序执行,可以自己设定

3.4.2.2 测试顺序随机

3.4.3 断言

断言相等

断言不相等

断言为空

断言不为空

3.5 测试套件

通过class运行测试用例

通过包运行测试用例

二、性能测试

1.概念

1.1 什么是性能测试

测试人员借助性能测试工具,模拟系统在不同场景下,对应的性能指标是否达到预期

功能测试:不管在什么场景下,只要能够正常运行即可

性能测试:软件在一些极端情况下,是不是能够正常运行

1.2 影响一个软件性能因素

硬件:服务器CPU利用率,内存,磁盘操作频率,CPU核心数

软件:算法,编程语言

用户:用户数量,用户使用时长,用户使用频率

1.3 性能测试常见的术语和性能测试衡量指标

1.3.1 并发

必须满足条件:1.需要有大量用户2.对系统请求(同时间)

1.3.2 用户

系统用户数:系统注册的用户

在线用户数:成功登录系统用户数

并发用户数:大量的用户访问系统,此时访问的用户数,就是并发用户数(满足了并发条件后,对应的用户数量)

1.3.3 响应时间
1.3.3.1 用户响应时间

N1+A1+N2+A2+N3+A3+N4

1.3.3.2 请求响应时间

服务器收到请求到发出响应这段时间就是请求响应时间

A1+N2+A2+N3+A3

影响一个软件响应时间的因素有哪些

数据库性能,网络带宽,服务器处理性能,软件算法,逻辑,用户设备

1.3.3.3 事务响应时间

事务:业务上独立的一个操作

业务度量的基本单位

358定律

1.3.4 每秒事务通过数量

处理的事务数量/事务花费的时间

每秒事务通过的数量越多自然说明软件性能越好的

1.3.5 点击量

用户点击数量

1.3.6 点击率

点击量/时间

1.3.7 吞吐量

用户一次请求和服务器之间的数据交互量

1.3.8 吞吐率

吞吐量/时间

1.3.9 思考时间

用户在对软件进行操作的时候,每一个操作有中间时间间隔

1.3.10 资源利用率

面试题:你了解性能测试,那么你给我说说你做性能测试,都关注哪些指标?

1.4 性能分类

1.4.1 基准性能测试

定义:

让系统在正常情况下运行,观察软件的性能指标

应用场景:

软件刚上线需要进行性能摸底

1.4.2 负载性能测试

验证软件在一定压力的情况下运行,观察性能指标是否出现了拐点

1.4.3 压力性能测试

系统处于饱和情况下,观察系统性能指标(往往会把系统搞崩溃)

1.4.4 可靠性能测试

系统在一个持续的时间段内运行,在这个运行时间段,观察系统各项性能指标是否正常

1天 -> 1周 -> 1月 -> 1季度 -> 1年

1.5 性能测试执行流程

功能测试执行流程:需求分析->测试计划->测试设计->测试执行->测试评估->上线

性能测试执行流程:需求分析->测试计划->选择一款性能测试工具->性能测试脚本编写->执行性能测试脚本->产出一个性能测试报告

性能测试中出现了不符合预期的情况,我们不叫bug,它叫性能瓶颈

在性能测试中,出现了性能瓶颈,开发修复的过程,叫它优化

1.6 LoadRunner

工具:LoadRunner  针对需求编写脚本

性能测试在功能测试完成之后才能测试

VUG:录制脚本(编写脚本)

Controller:设计场景,运行场景

Analysis:产出性能测试报告

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/846553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

统信UOS桌面操作系统1070上使用notepad--文本编辑器

原文链接:统信UOS桌面操作系统1070上使用notepad–文本编辑器 Hello,大家好啊!今天我要向大家推荐一款在统信UOS桌面操作系统1070上非常好用的文本编辑器软件——“notepad–”。这款软件功能强大、操作简便,特别适合开发人员和日…

车载软件架构 - AUTOSAR 的信息安全框架

车载软件架构 - AUTOSAR 的信息安全架构 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗…

Nginx企业级负载均衡:技术详解系列(17)—— 长连接优化策略与下载服务器高效搭建

你好,我是赵兴晨,97年文科程序员。 今天咱们来聊聊Nginx的两个知识点:Nginx的长连接优化、如何将Nginx配置成下载服务器。 长连接配置详解 在Nginx的配置中,长连接是一个重要的性能优化手段。它允许一个TCP连接上发送多个请求和…

STM32作业实现(一)串口通信

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…

c++实现:小型公司的信息管理系统(关于多态)

前言: 介绍员工信息:一个小型公司的人员信息管理系统 某小型公司,主要有四类人员:经理、技术人员、销售经理和推销员。现在,需要存储这些人员的姓名、编号、级别、当前薪水。计算月薪总额并显示全部信息人员编号基数为…

Nginx企业级负载均衡:技术详解系列(16)—— Nginx的try_files指令,你知道这个指令是干什么的吗?

你好,我是赵兴晨,97年文科程序员。 今天咱们来聊一聊Nginx的try_files指令,你知道这个指令是干什么的吗? 如果你对Web服务器配置有所了解,那么你可能会对try_files指令感到好奇。这个指令实际上是Nginx配置中的一项强…

提高工作效率的招数

自己的工作效率为啥比别人低,因为不会使用工具,这就是一个大冤种。 1.血泪教训,写代码调用第三方接口的时候已经要打印调用日志,不然扯皮真的难搞。 2.pg 上测试或的时候由于schema 错误mybatis会给你报空指针一样,还…

服务失败后如何重试?

服务失败后如何重试? 在分布式系统和网络应用程序中,重试策略对于有效处理瞬时错误和网络不稳定性至关重要。 重试策略能让系统在发生故障时多次尝试操作,从而提高最终成功的可能性。 下图显示了 4 种常见的重试策略。 01 线性回退 线性回…

SSMP整合案例第六步 在前端页面上利用axios和element-ui与后端交互实现增删改

新增操作 正常我们都是从新增功能书写 查看源码 显示的是这个 在vue里面开下来 这样就能显示 点击确定 就能把数据发送到后台进行保存 //弹出添加窗口handleCreate() {this.dialogFormVisible true;},//重置表单resetForm() {},//添加handleAdd() {//绑定的是确定按钮 发起请…

Educational Codeforces Round 166 (Rated for Div. 2) (A~C)

A. Verify Password 思路:按照ASCLL值进行比较就行(因为字母的ASCLL本来就在数字后面),所以,只要找到前面比后面的数大就输出NO,反之YES 代码实现: #include<bits/stdc.h> using namespace std; #define N 100005 typedef long long ll; ll n, m, num, sum, t; ll a[N]…

电脑死机问题排查

情况描述&#xff1a;2024年6月2日下午16&#xff1a;04分电脑突然花屏死机&#xff0c;此情况之前遇到过三次&#xff0c;认为是腾讯会议录屏和系统自带录屏软件冲突导致。 报错信息&#xff1a;应用程序-特定 权限设置并未向在应用程序容器 不可用 SID (不可用)中运行的地址…

C++设计模式|结构型 代理模式

1.什么是代理模式&#xff1f; 代理模式Proxy Pattern是一种结构型设计模式&#xff0c;用于控制对其他对象的访问。 在代理模式中&#xff0c;允许一个对象&#xff08;代理&#xff09;充当另一个对象&#xff08;真实对象&#xff09;的接口&#xff0c;以控制对这个对象的…

牛客周赛 Round 45VP

这场应该是十分仁慈的一场了 1.签到&#xff1a;https://ac.nowcoder.com/acm/contest/84244/A AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int a,b,c,d,e; int main() {cin>>a>>b>>c>>d>>e;int sabcde;if(s>1…

【Hive SQL 每日一题】统计每月用户购买商品的种类分布

文章目录 测试数据需求说明需求实现 测试数据 -- 创建 orders 表 DROP TABLE IF EXISTS orders; CREATE TABLE orders (order_id INT,user_id INT,product_id INT,order_date STRING );-- 插入 orders 数据 INSERT INTO orders VALUES (101, 1, 1001, 2023-01-01), (102, 1, 1…

张大哥笔记:下一个风口是什么?

我们经常会问&#xff0c;下一个风口是什么&#xff1f;我们可以大胆预测一下&#xff0c;2024年的风口是什么呢&#xff1f; 40年前&#xff0c;如果你会开车&#xff0c;那就是响当当的铁饭碗&#xff1b; 30年前&#xff0c;如果你会英语和电脑&#xff0c;那也绝对是个人才…

装饰器,状态管理和if判断(HarmonyOS学习第六课)

Builder装饰器-自定义构建函数 前面介绍了如何创建一个自定义组件。该自定义组件内部UI结构固定&#xff0c;仅与使方法进行数据传递。ArkUI还提供了一种更轻量的UI 元素复用机制Builder&#xff0c;Builder 所装饰的函数遵循build( )函数语法规则&#xff0c;开发者可以将重…

制作ChatPDF之后端Node搭建(三)

后端Node搭建 接上篇:制作ChatPDF之前端Vue搭建&#xff08;二&#xff09; 项目结构 下面是项目的结构图&#xff0c;包括前端 (Vue.js) 和后端 (Node.js) 的项目结构。 pdf-query-app/ ├── frontend/ │ ├── public/ │ │ ├── index.html │ ├── sr…

[Qt学习笔记]Qtxlsx在Qt下的配置和调用

背景分析 Qt操作Excel文件一般有QAxObject和QtXlsx两种方法&#xff0c;前者需要调用wps或office组件进行读写操作&#xff0c;具有一定的局限性&#xff0c;下面列出两种方法的优缺点对比 QAxObject&#xff1a; 优点&#xff1a;支持xls和xlsx等版本。office组件读写速度快&…

Java Map遍历方法(Map的Iterator原理)

Map中存放数据的Key-Value实质上就是Node节点&#xff0c;而 底层是hash数组和链表(或树)&#xff0c;不容易遍历。 一、containsKey() 和 get()查找元素 这两个方法可以获得信息&#xff0c;但是依旧不能轻松遍历。 containsKey()方法判断对应的key是否存在&#xff1b; get()…