2020310

news2024/9/29 13:18:11

Selenium: 基于WebDriver协议的 Web应用程序测试的工具

在这里插入图片描述

精简版:
selenium脚本通过http请求发送命令和参数给httpserver
httpserver通过json wire protocol格式转发命令和参数给webdriver
webdriver通过原生API或者JavaScript代码执行操作给浏览器
浏览器通过json wire protocol格式返回结果或者错误信息给webdriver
webdriver通过HTTP格式返回结果或者错误信息给httpserver
httpserver返回结果或者错误信息给selenium脚本

Appium工作原理 - 简书 (jianshu.com)
Appium: 基于WebDriver协议的移动端自动化测试框架
Appium的工作原理就是通过模拟用户的操作来测试移动应用程序的各种功能
Appium的工作原理如下: 1. Appium启动一个HTTP服务器,监听客户端的请求。 2. 客户端通过HTTP请求向Appium发送命令,例如启动应用程序、点击按钮、输入文本等。 3. Appium将命令转换为相应的移动设备操作,例如通过ADB命令启动应用程序、通过UIAutomator2库模拟用户操作等。 4. 移动设备执行相应的操作,并将结果返回给Appium。 5. Appium将结果转换为JSON格式,并通过HTTP响应返回给客户端。

Rational Functional Tester:面向对象的自动化功能测试工具
Rational Functional Tester实现自动化管理步骤的全面总结:
配置RFT和适配器:确定应用程序环境、选择适配器,并进行必要的配置。
创建自动化测试脚本:使用录制器或手动创建脚本,捕获应用程序操作序列和输入输出数据。
设计自动化测试用例:根据需求文档、设计文档编写自动化测试用例。
关联脚本和用例:将自动化测试脚本与相关的测试用例关联起来,以便在执行测试时跟踪测试执行情况和结果。
创建自动化测试套件:根据测试环境的要求,配置测试设备、测试数据等参数,并编排测试用例的执行顺序。
执行测试:运行自动化测试脚本和测试套件,收集测试数据和结果,并记录任何错误或异常情况。
分析和报告测试结果:根据测试结果生成测试报告,汇总测试执行情况、缺陷和建议。
在这里插入图片描述

Jmeter: 压力测试工具,用于对软件做压力测试。能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试.
工作原理: 基于各种协议,通过多线程的方式来模拟并发用户,设计各种场景来模拟真实的用户负载

在这里插入图片描述

分布式测试是指通过局域网和Internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享、分散操作、集中管理、协同工作、负载均衡、测试过程监控等目的的计算机网络测试。在工作中使用JMeter做大并发压力测试的场景下,需要模拟成百上千的用户并发,这样使用单台机器模拟所有的并发用户就有些力不从心。

(3)JMeter分布式测试原理
一台电脑作为控制机(Controller、master),其它电脑做为执行机(Agent、slave)。
JMeter脚本执行时,控制机会把脚本发送到每台执行机上,执行机拿到脚本后就开始执行。
在执行机中执行脚本时,不需要启动JMeter工具界面,可以理解它是通过命令行模式执行的。
执行完成后,执行机会把结果回传给控制机,控制机会收集所有执行机的信息并汇总。
在这里插入图片描述

JMeter是一款基于Java的开源性能测试工具,它可以模拟多种协议和应用场景,如HTTP、FTP、JDBC、SOAP、REST等。JMeter的工作原理可以简单概括为以下几个步骤:

  1. 创建测试计划:用户需要在JMeter中创建一个测试计划,该计划包含了测试的目标、测试场景、测试数据等信息。

  2. 添加线程组:在测试计划中添加线程组,线程组是一组并发用户的集合,每个线程代表一个用户,可以设置线程数、循环次数、延迟时间等参数。

  3. 添加Sampler:Sampler是JMeter中的采样器,用于模拟用户的请求,如HTTP请求、FTP请求、JDBC请求等。

  4. 添加断言:断言用于验证响应结果是否符合预期,如响应时间、响应内容、响应状态码等。

  5. 添加监听器:监听器用于收集测试结果,如响应时间、吞吐量、错误率等。

  6. 运行测试:在JMeter中启动测试,JMeter会模拟多个并发用户发送请求,收集响应结果,并将结果输出到监听器中。

  7. 分析测试结果:通过监听器中的结果数据,可以对测试结果进行分析和优化。

总的来说,JMeter的工作原理就是通过模拟多个并发用户发送请求,收集响应结果,并对测试结果进行分析和优化。

相关代码:selenium测试
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

创建Chrome浏览器实例

driver = webdriver.Chrome()

打开网页

driver.get(“https://example.com”)

等待按钮加载完成

button = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, “button-id”))
)

点击按钮

button.click()

关闭浏览器

driver.quit()


```python appium测试计算器
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time

# 设置 Appium 服务器地址和被测试应用的包名和启动 Activity
desired_caps = {
    'platformName': 'Android',
    'deviceName': 'Android Emulator',
    'appPackage': 'com.android.calculator2',
    'appActivity': 'com.android.calculator2.Calculator'
}

# 连接 Appium 服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 等待应用启动
time.sleep(5)

# 定位数字 1 按钮并点击
driver.find_element_by_id('com.android.calculator2:id/digit_1').click()

# 定位加号按钮并点击
driver.find_element_by_id('com.android.calculator2:id/op_add').click()

# 定位数字 2 按钮并点击
driver.find_element_by_id('com.android.calculator2:id/digit_2').click()

# 定位等号按钮并点击
driver.find_element_by_id('com.android.calculator2:id/eq').click()

# 获取计算结果
result = driver.find_element_by_id('com.android.calculator2:id/result').text

# 断言计算结果是否正确
assert result == '3'

# 关闭应用
driver.quit()

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

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

相关文章

材料微观结构表征技术:电子背散射衍射EBSD

材料微观结构表征技术:电子背散射衍射EBSD 电子背散射衍射(EBSD)是一种材料表征技术,通过使用电子束对材料进行照射,并测量背向散射的电子的衍射模式,可以提供关于材料微观结构的详细信息。这项技术结合了…

DAY 75 【分布式应用】消息队列之卡夫卡 + EFLFK集群部署

pache公司的软件包官方下载地址:archive.apache.org/dist/ 注:kafka从3.0版本之后,不再依赖zookeeper Zookeeper 概述 官方下载地址:https://archive.apache.org/dist/zookeeper/ Zookeeper 定义 Zookeeper是一个开源的分布式…

【Linux脚本篇】循环语句-for

目录 🍁for的语法格式 🍁for循环案例 🍃案例一:循环创建文件 🍃案例二:应用引号或转义符 🍃案例三:从变量中取值 🍃案例四:从命令中取值 🍃案例五…

Vulkan入门精要

Vulkan入门精要 (fuxiii.github.io)https://fuxiii.github.io/Essentials.of.Vulkan/

开始在适用于 Linux 的 Windows 子系统上使用 Git

目录 Git 可以安装在 Windows 和 WSL 上安装 GitGit 配置文件设置Git 凭据管理器设置使用 SSH 的 GitAzure 的其他配置添加 Git Ignore 文件Git 和 VS CodeGit 行尾其他资源 Git 是最常用的版本控制系统。 使用 Git,可以跟踪对文件所做的更改,以便记录已…

java使用aspose.pdf或者spire.pdf 将pdf文件转word,实测

1. aspose.pdf aspose.pdf不是破解版的只能转3页,所以我弄了个破解版, aspose.pdf破解版在网上都有破解方法也比较简单,这里就不说了,直接引入破解版的jar包,在这里我用的是aspose-pdf-21.11.jar版本,代码…

【电路】电路与电子技术基础 课堂笔记 第9章 集成运算放大器基础

本章的研究对象是集成运算放大器的应用, 主要关注如何利用理想运放的特点,分析放大电路, 不讨论继承运放的工作原理和内部结构。 9.3 集成运放的主要参数与选择 9.4 集成运放的应用 集成运放应用于信号运算,信号处理&#xff…

调用阿里API实现手机号归属地查询

调用阿里API实现手机号归属地查询 1.作者介绍2.号码归属地介绍2.1 什么是手机号码归属地?2.2 为什么需要手机号码归属地?2.3 手机号码归属地查询对个人的运用 3.调用阿里API实现手机号归属地查询3.1阿里API调用3.2补充…

BYC30W-600P-ASEMI代理NXP快恢复二极管BYC30W-600P

编辑:ll BYC30W-600P-ASEMI代理NXP快恢复二极管BYC30W-600P 型号:BYC30W-600P 品牌:NXP/恩智浦 封装:TO-247-2L 最大漏源电流:30A 漏源击穿电压:600V 引脚数量:2 恢复时间:2…

JavaScript:获取当前日期、星期、时间 | Data对象

文章目录 1 Date对象2 代码示例3 获取 yyyy-MM-dd 格式的日期 1 Date对象 JavaScript 中的 Date 对象表示日期和时间。Date 对象基于自 1970 年 1 月 1 日 00:00:00 UTC(协调世界时)以来的毫秒数。以下是 Date 对象的一些常用方法和属性。 getFullYear…

H5页面这样测,业务方反馈 0 Bug!

部门最近的H5相关项目挺多的,由于团队之前接触的大多是Web项目,很少涉及H5,想着给团队成员培训下,减少漏测率,于是整理了一个文档。 别说,效果还挺不错的,连着上线6个版本,都没有收…

Python3数据分析与挖掘建模(10)多因子:复合分析-交叉分析与实现示例

1. 复合分析 1.1 概述 复合分析(Factorial Analysis)是一种统计分析方法,用于研究多个因素对观测结果的影响,并探究各个因素之间的相互作用效应。 在复合分析中,研究者会选择多个因素(也称为处理变量或独…

路由器WiFi密码怎么设置?这样做可以快速设置!

案例:我在外面租房,买了一个路由器,为了不让别人使用,我想设置一个密码。但我不知道如何操作。路由器怎么设置密码?求方法分享! 如今,Wi-Fi已成为日常生活中不可或缺的一部分。为了保障个人和家…

4. LockSupport与线程中断

4.1 线程中断机制 4.1.1 从阿里蚂蚁金服面试题讲起 Java.lang.Thread下的三个方法: ● 如何中断一个运行中的线程? ● 如何停止一个运行中的线程? 4.1.2 什么是中断机制 ● 首先,一个线程不应该由其他线程来强制中断或停止,而是应…

排水管网监测,万宾排水管网在线监测系统

城市排水管网是保障城市环境卫生的重要基础设施。然而,传统的排水管网管理方式存在许多问题.通过排水管网在线监测系统的建设,可以实现对管网上窨井井盖状态、管网液位、管网流量、管网水质等数据采集,实时掌握排水管网运行状况,为…

@足智多谋的你,联网智能门锁试卷(2023高考版)正式发布!

千淘万漉虽辛苦,吹尽狂沙始到金。2023年的高考已于上周正式结束。湖南省高考成绩和录取控制分数线将在6月25日正式公布。广大学子历经一千多个日夜的努力,即将在这一天见证结果。 其实,当我们真正走出校园才发现,学无止境&#x…

敏捷项目管理

在了解敏捷项目管理之前,我们先看下敏捷和传统项目管理有什么区别。 传统项目管理:阶段式项目管理模式。 制定详细的计划和步骤,按计划执行,直到所有的计划执行全部结束。 敏捷项目管理模式,从愿景和高价值的目标出发…

V5.0.X版本 EMQX安装、卸载 以及使用

V5.0.X版本 EMQX安装、卸载 以及使用 一、卸载二、下载安装2.1 下载2.2 安装2.2.1 rpm安装2.2.2 tar安装 2.3 测试启动 三、EMQX使用 回到目录    回到末尾 EMQX为大规模分布式物联网 MQTT 消息服务器。提供高效可靠连接海量物联网设备,实时处理分发消息与事件流数…

高级信息系统项目管理师资料分享

💕💕 推荐:体系化学习Java(Java面试专题) 文章目录 1. 高级信息系统项目管理师资料分享2023年5月12日2023年4月10日2023年3月28日2023.5高项精讲 2023备考高级信息系统项目管理师资料 1. 高级信息系统项目管理师资料分…

超级实用!Python 3.6帮您提升编码效率的一个新的小特性 ——f{}

Python3.6 格式化字符串的新用法 在python 3.6格式化字符串时,增加了一个非常实用的新特性,文本以“f”或者“F”为前缀加上{},可以实现类似于%和str.format的功能,但与他们相比更加易读和不易不错。使用也非常方便,以…