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的工作原理可以简单概括为以下几个步骤:
-
创建测试计划:用户需要在JMeter中创建一个测试计划,该计划包含了测试的目标、测试场景、测试数据等信息。
-
添加线程组:在测试计划中添加线程组,线程组是一组并发用户的集合,每个线程代表一个用户,可以设置线程数、循环次数、延迟时间等参数。
-
添加Sampler:Sampler是JMeter中的采样器,用于模拟用户的请求,如HTTP请求、FTP请求、JDBC请求等。
-
添加断言:断言用于验证响应结果是否符合预期,如响应时间、响应内容、响应状态码等。
-
添加监听器:监听器用于收集测试结果,如响应时间、吞吐量、错误率等。
-
运行测试:在JMeter中启动测试,JMeter会模拟多个并发用户发送请求,收集响应结果,并将结果输出到监听器中。
-
分析测试结果:通过监听器中的结果数据,可以对测试结果进行分析和优化。
总的来说,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()