2020310

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()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是AI业务流程质检,如何用它做好销售和服务过程监督

近几年,随着语音转写、语义理解和机器学习等技术的成熟,越来越多的企业开始部署基于AI技术的智能质检系统,来帮助坐席、销售和服务团队提高沟通质量管理能力,同时提升沟通中的客户体验。 不过,不论是最初的人工质检&a…

object类型(equals、hashCode、getClass、getName)

equals方法的改写 Override//重写equals方法,重写方法后对比的属性值(没有重写前对比的是属性值)public boolean equals(Object obj) {Students s (Students) obj;return this.name.equals(s.name) && this.age s.age;}public clas…

2000-2019年280多个地级市就业人数数据(全市)/城市就业数据

2000-2019年280多个地级市就业人数数据(全市) 1、时间范围:2000-2019年 2、范围:包括280多个地级市 3、来源:城市NJ 4、统计口径:全市 5、单位:万人 6、缺失情况:与城市年鉴缺失情况…

Mysql中联合索引的最左匹配

联合索引 通过将多个字段组合成一个索引,该索引就被称为联合索引。 比如,将商品表中的 product_no 和 name 字段组合成联合索引(product_no, name),创建联合索引的方式如下: CREATE INDEX index_product_no_name ON product(pr…

剑指 Offer 09: 用两个栈实现队列

简单明了,带你直接看懂题目和例子。 输入: ["CQueue","appendTail","deleteHead","deleteHead"] 这里是要执行的方法,从左到右执行 [[],[3],[],[]]对应上面的方法,是上面方法的参数。CQ…

docker资源控制cgroup

一、CPU控制 cgroups,是一个非常强大的linux内核工具,他不仅可以限制被namespace隔离起来的资源, 还可以为资源设置权重、计算使用量、操控进程启停等等。所以cgroups (Control groups) 实现了对资源的配额和度量。 cgroups有四大功能: 资源限制:可以…

前后端交互三、Ajax加强

零、文章目录 前后端交互三、Ajax加强 1、XMLHttpRequest的基本使用 (1)什么XMLHttpRequest XMLHttpRequest(简称 xhr)是浏览器提供的 Javascript 对象,通过它,可以请求服务器上的数据资源。jQuery 中的…

企业电子招标采购系统源码java 版本 Spring Cloud + Spring Boot

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…

JVM原理:JVM垃圾回收算法(通俗易懂)

目录 前言正文垃圾标记算法引用类型强引用软引用弱引用虚引用 引用计数法循环引用问题 根可达性分析法虚拟机栈(栈帧的局部变量表)中的引用方法区中类静态属性引用方法区中常量引用本地方法栈(Native方法)引用 垃圾回收算法标记清…

InstructGPT:Training language models to follow instructions with human feedback

Training language models to follow instructions with human feedback 通过人类反馈的微调,在广泛的任务中使语言模型与用户的意图保持一致 aligning language models with user intent on a wide range of tasks by fine-tuning with human feedback 实验动机 …

AssetStudio工程导入VS各种报错解决

AssetStudio下载地址:https://github.com/Perfare/AssetStudio 工程导入,生成解决方案,然后报了一堆错。让我们来一个一个的解决 这个错误,是缺少System.Runtime.InteropServices.RuntimeInformation.dll文件,下载并添…

20230612 set1打卡

哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

【leetcode】189.轮转数组

方法1: 先把原数组拷贝一份,然后先将原数组的后k个拷贝,再将前numsSize-k个拷贝 void rotate(int* nums, int numsSize, int k) {//可能存在k>numsSize的情况,先处理kk k % numsSize;//拷贝数组int arr[numsSize];int i 0;in…

计算机网络 | socket IPC(本地套接字domain)

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

大模型研究方向0611

文章目录 1. 大模型自身角度认知角度2.大模型的成本角度3. 大模型的评测角度4.大模型的安全角度5. 大模型结构角度 附上刘知远老师的见解:https://hub.baai.ac.cn/view/27283 1. 大模型自身角度认知角度 即大模型的理解,现在,大众普遍认为L…

0202性能分析-索引-MySQL

1 索引语法 创建索引 CREATE [UNIQUE|FULLTEXT] INDEX index_name ON table_name(index_column_name,...);Index_name:规范为idx_表名_字段名... 查看索引 SHOW INDEX FROM table_name;删除索引 DROP INDEX index_name ON table_name;按照下列要求,创建…

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 消息服务器。提供高效可靠连接海量物联网设备,实时处理分发消息与事件流数…

leangoo领歌敏捷工具中,如何快速查看项目内所有任务卡片

项目管理员能不能快捷的查看整个项目内的所有任务? 能不能快捷查看项目内某一个成员的所有任务? 能不能快捷的在项目内通过一些条件选择查看任务? 可以导出项目内某一个人的所有任务吗?方便做一些统计 等等... 这些现在Leang…

武职301班-day01

实现永和小票页面 效果图 问题分析 把一个大的开发任务,先进行任务分析,把完成这个任务需要的技术点和开发步骤写出来。 开发分析 特点: htmlcss实现 1)小票有宽度限制 2)字体大小不一样,大部分字体大小…

解决获取taro全局配置文件失败,找不到配置文件失败问题

问题:这会导致项目初始化不成功,即要用vuets生成项目的话,依旧是wxml,js的文件,而不是vue文件 解决一:首先找到配置文件目录 删除taro开头的三项文件,再去node_modules下删除tarojs 然后去终…