当前位置: 首页 > news >正文

性能测试和自动化测试

1. 自动化测试

1.1. selenium自动化测试函数

# 浏览器参数配置
options = webdriver.EdgeOptions()# 添加无头模式
# options.add_argument("-headless")
# 页面加载策略
# options.page_load_strategy = "normal" # 等待所有资源加载完成
options.page_load_strategy = "eager"  # DOM访问就绪
# options.page_load_strategy = "none"  # 完全不阻塞,直接往下执行脚本
  1. 创建浏览器驱动对象
# 创建浏览器对象
driver = webdriver.Edge(service=Service(EdgeIns), options=options
  1. 打开浏览器网页对象
# 访问浏览器页面
driver.get('https://www.baidu.com')
  1. 查找元素并点击
# driver.find_element(By.CSS_SELECTOR, "#su").click()
  1. 查找元素并输入文本
# # 百度输入框输入“迪丽热巴”,清除之后输入比特就业课
driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("迪丽热巴")
  1. 清除输入框内容
driver.find_element(By.CSS_SELECTOR, "#kw").clear()
  1. 获取元素文本信息
text = driver.find_element(By.CSS_SELECTOR,"#su").text
print(text)
  1. 获取元素属性值
# 获取百度一下的文字
text = driver.find_element(By.CSS_SELECTOR,"#su").get_attribute("value")
print(text)
  1. 获取页面标题和URL
title = driver.title
url = driver.current_url
  1. 获取页面句柄切换页面句柄
# 获取页面标题和url
print("before:" + driver.title)
print("before:" + driver.current_url)
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, "#s-top-left > a:nth-child(6)").click()
time.sleep(2)
# 获取当前页面句柄
curHandle = driver.current_window_handle
# 获取所有页面句柄
allHandle = driver.window_handles
# 遍历所有句柄切换到新页面
for handle in allHandle:if handle != curHandle:driver.switch_to.window(handle)print("after:" + driver.title)
print("after:" + driver.current_url)
  1. 设置窗口大小
# 设置窗口大小
# 最大化
driver.maximize_window()
# 最小化
driver.minimize_window()
# 全屏
driver.fullscreen_window()
# 自定义大小
driver.set_window_size(1024,100)
  1. 各种弹窗
# 警告弹窗
driver.get("file:///D:/file/%E6%AF%94%E7%89%B9%E6%95%99%E5%8A%A1/%E6%B5%8B%E8%AF%95/%E6%B5%8B%E8%AF%95%E8%AF%BE%E4%BB%B6/selenium-html/alert.html#")
time.sleep(2)
#点击调起弹窗
driver.find_element(By.CSS_SELECTOR,"#tooltip").click()#切换到弹窗
alert = driver.switch_to.alert
time.sleep(2)
#确定/取消
# alert.accept()
alert.dismiss()
time.sleep(2)
#弹窗关闭之后才能执行下面的代码
driver.find_element(By.CSS_SELECTOR,"#tooltip").click()#确认弹窗
driver.get("file:///D:/file/%E6%AF%94%E7%89%B9%E6%95%99%E5%8A%A1/%E6%B5%8B%E8%AF%95/%E6%B5%8B%E8%AF%95%E8%AF%BE%E4%BB%B6/selenium-html/confirm.html")
driver.find_element(By.CSS_SELECTOR,"body > input[type=button]").click()
time.sleep(2)
#切换弹窗
alert = driver.switch_to.alert
#确定/取消
# alert.accept()
alert.dismiss()time.sleep(2)# 提示弹窗---输入框
driver.get("file:///D:/file/%E6%AF%94%E7%89%B9%E6%95%99%E5%8A%A1/%E6%B5%8B%E8%AF%95/%E6%B5%8B%E8%AF%95%E8%AF%BE%E4%BB%B6/selenium-html/Prompt.html")
time.sleep(2)
#点击调起弹窗
driver.find_element(By.CSS_SELECTOR,"body > input[type=button]").click()
time.sleep(2)
#输入文本+确定+取消
alert = driver.switch_to.alert
#肉眼看不到在弹窗上输入的文本信息
alert.send_keys("比特就业课")
time.sleep(2)
# alert.accept()
alert.dismiss()
# time.sleep(2)
  1. 添加屏幕截图
# 添加屏幕截图
# filename = "./test.png"
# driver.save_screenshot(filename)
# 进阶版本
# autotest-2024-05-08-104723.png
filename = "./images/"+"autotest-" + datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S") + ".png"
driver.save_screenshot(filename)
  1. 等待
# 添加等待
# 1. 隐式等待,作用于整个全局代码
driver.implicitly_wait(3)
driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("天涯论坛")
driver.find_element(By.CSS_SELECTOR, "#su").click()
# 创建显示等待
wait = WebDriverWait(driver, 3)
# > div > div > div.new-tag_4ozgi.new-text-link_3k9GD > div > div.flex-wrapper-top_3ucFS > div.flex-col-left_3trtY.baike-wrapper_6AORN.cu-pt-xs-lg.baike-wrapper-pc_26R04.cu-pt-xl.baike-wrapper-left-pc_5eYY8.cos-space-pb-sm > div > div > p > span:nth-child(1) > span
# wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,"#\\31  > div > div > div ")))
driver.get("file:///D:/file/%E6%AF%94%E7%89%B9%E6%95%99%E5%8A%A1/%E6%B5%8B%E8%AF%95/%E6%B5%8B%E8%AF%95%E8%AF%BE%E4%BB""%B6/selenium-html/alert.html")
driver.find_element(By.CSS_SELECTOR, "#tooltip")
# 等到弹窗是否出现
wait.until(EC.alert_is_present())
driver.switch_to.alert.accept(
  1. 网页导航操作
# 网页导航操作
driver.back()
time.sleep(2)
driver.forward()
time.sleep(2)
driver.refresh()
time.sleep(2)

1.2. 如何书写性能测试测试报告

2. 性能测试

2.1. 知识点和工具使用

2.1.1. 测试工具:

  • 接口测试:postman
  • jmeter:性能测试,性能测试报告
  • 抓包工具:fiddler

2.1.2. 基础概念

常见性能测试指标:

  1. 并发数

  1. 吞吐量

  1. 响应时间

  1. 资源利用率

测试类型:

2.1.3. 使用jmeter进行性能测试

2.1.3.1. 打开jmeter

双击打开

打开之后是英文的界面,如果想要更改成中文的话可以更改配置文件,这样能够永久设置成为中文

2.1.3.2. 新建线程组

注意事项:

2.1.3.3. 添加http接口测试请求

2.1.3.4. 添加查看结果树

2.1.3.5. 添加登录凭证(user_token_header)

填写user_token_header就可以不用登录就可以访问到页面了。

2.1.3.6. 添加json提取器

部分json用法

添加json变量

检查自己写的json是否正确

避免json被覆盖,因为jmeter里面的作用于是树形结构的,所以可以将文件拖拽成子集以保证正确作用域。

2.1.3.7. 添加json断言

作用:使用json断言可以判断元素数据是否存在,是否访问符合预期值

选项:

2.1.3.8. 防止Content-Type不一致

因为两次的Content-Type不一致所以会请求失败,添加博客失败

当修改添加Content-Type之后

成功了

2.1.3.9. 查看线程状态

2.1.3.10. 实现并发效果(添加同步定时器)

设定并发数

  • 模拟用户组数量不能超过线程组配置的线程数(用户数),不然会导致阻塞
  • 如果低于配置的线程数的话最好将循环打开,避免达不到并发数。

导致阻塞

一直在突触退不出来

2.1.3.11. 添加事务控制器

2.1.3.12. CSV文件数据文件设置(实现多用户登录操作)

使用Excel创建的CSV文件

保存的时候使用CSV格式

填写参数

第一次登录

第二次登陆

2.1.3.13. 添加事务控制器

添加事务控制器之后的聚合报告

2.1.3.14. http Cookie管理器

2.1.3.15. 梯度线程组

使用这个可以逐步增加线程数来达到测压的效果。

2.1.3.16. 常见监听器
2.1.3.16.1. 聚合报告

2.1.3.16.2. Response Times Over Time

2.1.3.16.3. TransactionsperSecond(TPS)

2.1.4. 性能测试测试报告

2.1.4.1. 命令

注意:

一般查看结果树只是用于调试阶段。

相关文章:

  • 一文看懂Spring Boot集成智谱清言 AI最佳实践
  • 【Linux应用】Linux系统日志上报服务,以及thttpd的配置、发送函数
  • 手写RPC框架<一> SPI机制
  • Vue3 + TypeSrcipt 防抖、防止重复点击实例
  • python:Tkinter 开发邮件客户端,能编写邮件,发送邮件带附件
  • 【Linux】文件赋权(指定文件所有者、所属组)、挂载光驱(图文教程)
  • CFA: Coupled-hypersphere-based Feature Adaptation 论文解析
  • C++_核心编程_多继承语法
  • MySQL强化关键_020_SQL 优化
  • c# 完成恩尼格玛加密扩展
  • Java高频面试之并发编程-24
  • Python数据分析7
  • 70常用控件_QVBoxLayout的使用
  • 基于PHP的扎染文创产品商城
  • 如何在最短时间内提升打ctf(web)的水平?
  • XSS攻击防御全指南:核心防护技巧
  • 多线程3(Thread)
  • serv00 ssh登录保活脚本-邮件通知版
  • SpringSecurity+vue通用权限系统
  • OPENCV图形计算面积、弧长API讲解(1)
  • 免费建设个人手机网站/北京官网seo收费
  • 有什么可以做建筑模型的网站/seo技术助理
  • 电脑网页制作软件下载/seopeix
  • 网站开发php价格/营销app
  • 企业网站制作报价/百度搜索广告
  • .net网站开发实训代码/黑龙江最新疫情通报