自动化测试工具集
性能自动化测试工具:
loaddrunner(UI) jmeter(接口)
APP 自动化测试工具::
appinum,Macaca
UI 自动化测试化工具:
selenium
一.什么是自动化测试?
1.关于自动化测试
自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。
1)分类:
自动化测试包括 UI 自动化、接口自动化、单元测试自动化按照金字塔模型来进行自动化测试规划,可以产生最佳的自贡话测试产出投入比(ROI),可以用较少的投入获得很好的收益。
单元测试(Java的单元测试框架是 JUnit)
接口自动化:指 API 测试
常见的接口自动化测试工具
有,RobotFramework,JMeter,SoapUI,TestNG+HttpClient,Postman等
UI 自动化: 即界面自动化测试
UI层的测试框架比较多,比如 Windows 客户端测试的 AutoIT,web测试的 selenium 以及 TestPlant eggPlant,Robot framework,QTP等。
2)介入时机:
UI自动化在项目后期介入,等到系统功能稳定的时候开始介入
接口自动化,接口完成后开始介入,在项目中期介入(jmeter postman soupUI)
2.自动化测试的优势
实施自动化测试的前提条件:需求变动不频繁、项目周期足够长、自动化测试脚本可重复使用
其优势在于:
- 回归测试 兼容性测试(浏览器的兼容性)
- 节约人力成本,节约各种资源
- 进行手工测试无法完成的测试
- 测试量大不会出错
自动化测试的时机: 等到系统的功能稳定之后做自动化测试
适合做自动化的项目: 项目周期比较长(可以反复使用编写好的自动化脚本)
3. UI 自动化测试工具 seleninum
1)selenium 的特点
- 免费
- 轻巧,占用内存少
- 支持多语言: Python、Java、ruby、C#、JavaScript等,都可以通过 selenium 完成自动化测试,而 QTP 只支持 VBS
- 支持多平台:windows、Linux、MAC
- 支持多浏览器:Chrome、Firefox、edge、Opera、Safari、IE等
- 支持分布式测试用例的执行,可以把测试用例1分不到不同的测试机器执行,相当于分发机的功能
2)selenium 工具介绍
组成版本: selenium1.0,seleninum RC,seleninum IDE,seleninum Grid
Selenium是web应用中基于UI的自动化测试框架,支持多平台、多浏览器、多语言。
早期的 selenium RC 已经被现在的 webDriver 所替代,可以理解为 selenium 1.0+ webdriver (浏览器的驱动) 构成现在的 selenium 2.0 。
现在说的 selenium 一般指的就是 selenium2.0。它又由 Selenium IDE,Webdriver,Selenium Grid 组成。
selenium IDE
Selenium IDE一个用于Selenium测试的完成集成开发环境,可以直接录制在浏览器的用户操作,并且能回放,编辑和调试测试脚本。调试过程中可以逐步进行或调整执行的速度,并且可以在底部浏览日志出错信息。
Webdriver
Selenium RC 在浏览器中运行 JavaScript 应用,会存在环境沙箱问题,而WebDriver可以跳出JavaScript的沙箱,针对不同的浏览器创建更健壮的,分布式的,跨平台的自动化测试脚本。基于特定语言(Java,C#,Python,Ruby,Perl,JavaScript等)绑定来驱动浏览器对Web元素进行操作和验证。
selenium Grid
selenium Grid是一个服务器,提供对浏览器实例访问的服务器列表,管理各个节点的注册和状态信息。可以实现在同一时刻不同服务器上执行不同的测试脚本。
3)selenium IDE录制脚本
selenium2.0:由 Selenium IDE,Webdriver,Selenium Grid 组成。
TODO
4)selenium webdriver 的基本使用
驱动 edge 火狐有自带?
谷歌浏览器无
驱动和浏览器的版本要对应
# 自动化脚本的构成
from selenium import webdriver
import time
driver = webdriver.Chrome() # 获得浏览器的驱动,首字母需要大写
driver.get("https://www.baidu.com/") # 在浏览器打开百度搜索网页
driver.find_element_by_id("kw").send_keys("刀剑") # 通过(前端)元素的属性 id 来定位到该元素(text文本框),并对元素进行操作
driver.find_element_by_id("su").click() # 按钮 id = su
time.sleep(8)
driver.quit() # 让驱动关闭浏览器,并清除缓存
# driver.close() # 关闭浏览器,没有清除浏览器缓存
# from selenium import webdriver
# driver = webdriver.Chrome()
# if __name__=='__main__':
# driver.get('http://www.baidu.com/')
2)webdriver 的工作原理
- 启动浏览器后,selenium-webdriver 会将目标浏览器绑定到特定的端口,启动后的浏览器则作为 webdriver 的 remote server
- 客户端(也就是测试脚本),借助 ComandExecutor 发送HTTP请求给 sever 端(通信协议:The WebDriver Wire Protocol,在 HTTP request 的 body 中,会以WebDriver Wire 协议规定的 JSON 格式的字符串来告诉 Selenium 我们希望浏览器接下来做什么事情)
- Sever 端需要依赖原生的浏览器组件,转化 Web Service 的命令为浏览器 native 的调用来完成操作
selenium 自动化流程如下:
- 自动化程序调用Selenium 客户端库函数(比如点击按钮元素)
- 客户端库会发送Selenium 命令 给浏览器的驱动程序
- 浏览器驱动程序接收到命令后 ,驱动浏览器去执行命令
- 浏览器执行命令
- 浏览器驱动程序获取命令执行的结果,返回给我们自动化程序
- 自动化程序对返回结果进行处理
最后
如果你想学习自动化测试,那么下面这套视频应该会帮到你很多
如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....
最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了!
以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。