软件测试之自动化测试概念篇(沉淀中)
文章目录
- 重点
- 1. ⾃动化
- 1.1 ⾃动化概念
- 1.1.1 回归测试
- 1.2 ⾃动化分类
- 1.2.1 接⼝⾃动化
- 1.2.2 UI⾃动化
- 1.3 ⾃动化测试⾦字塔
- 2. web⾃动化测试
- 2.1 驱动
- 2.1.1 安装驱动管理
- 2.1.2 selenium库
- 3. Selenium
- 3.1 ⼀个简单的web⾃动化⽰例
- 3.2 selenium+驱动(webdriver-manager)+浏览器的⼯作原理
- 总结
重点
• ⾃动化测试
• Web⾃动化测试
• selenium
1. ⾃动化
1.1 ⾃动化概念
⾃动的代替⼈的⾏为完成操作。
⾃动化在⽣活中处处可⻅,
⾃动洒⽔机,主要通上⽔就可以⾃动化洒⽔并且可以⾃动的旋转。
⾃动洗⼿液,免去了⼿动挤压可以⾃动感应出洗⼿液
超市⾃动闸⻔,不需要⼿动的开⻔关⻔
⽣活中的⾃动化案例有效的减少了⼈⼒的消耗,同时也提⾼了⽣活的质量。
软件中的⾃动化测试也是如此,通过⾃动化测试有效减少⼈⼒的消耗的同时也提⾼了测试的质量和效率。
eg:
人力:2-3小时
程序测试:5min之内(几秒之内)
自动化测试----->>>>自动的测试软件(⼈⼒的消耗的同时也提⾼了测试的质量和效率)
⾃动化的主要⽬的就是⽤来进⾏回归测试。什么是回归测试?
1.1.1 回归测试
软件有多个版本需要进⾏功能的整体回归。
为了避免新增功能影响到历史的功能需要进⾏功能的回归。
eg:
软件通常有非常多的版本,软件在不断的迭代更新。
当新版本即将上线,意味着有用户使用新的版本,也有用户使用旧的版本。
新的版本开发可能会影响到旧的版本,如果不对旧版本进行测试,可能会出现新版本上线之后旧版本无法使用或者旧版本出现了功能故障。
历史功能 eg:
每增加一个功能会出现代码的更新/增加/修改/删除…
即有可能对历史功能造成影响。
自动化测试也就是自动化脚本(测试人员)
常⻅⾯试题
1.⾃动化测试能够取代⼈⼯测试吗?
⾃动化测试不⼀定⽐⼈⼯测试更能保障系统的可靠性,⾃动化测试是测试⼈员⼿⼯编写,
后续如果有功能的变更⾃动化也需要进⾏不定期的维护和更新。
2.⾃动化测试可以⼤幅度降低⼯作量?
错误
坑!!“⼀定程度上”和“⼤幅度”的表达⽅式也需要注意
注意:测试笔试中的选择题尽量不要选择说的太死或者太绝对的选项
测试工作中不仅仅包含执行测试阶段。
测试主要由人工测试,通过自动化测试来辅助测试。
1.2 ⾃动化分类
• 讲⾃动化分类的⽬的是避免大家将⾃动化混淆,同时避免讲不同的⾃动化如何实施造成的课时压⼒
• 很多人经常听到⾃动化这个词,但是很容易误以为⾃动化就是⼀个东西,⾃动化是个统称,大家可以理解为我们常说的吃⽠这样的表达⽅式和⾃动化是⼀样的,吃⽠可以是吃西⽠,吃哈密⽠,吃⾹⽠,⾃动化也包含多种,如接⼝⾃动化,web⾃动化,移动端⾃动化等等…
• 主要介绍各测试分类为什么需要实施⾃动化,⽬的和意义
1.2.1 接⼝⾃动化
什么是接⼝⾃动化测试?
为什么要做?解决了什么问题,⽬的是什么
测试接⼝
接口测试 请求参数、请求体、响应参数,状态码…
1.2.2 UI⾃动化
UI测试也称为界⾯测试,常⻅的UI⾃动化测试包含web⾃动化测试、移动端⾃动化测试等等。
• 移动端⾃动化测试
什么是移动端⾃动化测试?
为什么要做?解决了什么问题,⽬的是什么
测试移动端界⾯表现
移动端,顾名思义,就是部署在⼿机上的应⽤程序。移动端⾃动化测试主要测试程序部署在⼿机上能
否按照预期的结果的进⾏操作
移动端测试通常不是将程序部署在移动端上进⾏测试,⽽是需要安装模拟器,在电脑上编写⾃动化测
试脚本代码对模拟器上的软件进⾏操作
移动端测试难度相对较⼤,移动端测试的稳定性要⽐接⼝⾃动化测试和web⾃动化测试的稳定性要差
很多,原因主要是移动端测试收到的环境影响⽐较多
• web⾃动化测试
什么是web⾃动化测试?
为什么要做?解决了什么问题,⽬的是什么
测试web界⾯表现
如何进⾏百度搜索?
通常来说我们⼿动进⾏百度搜索的步骤如下,web⾃动化能够代替我们⾃动的执⾏。
模拟⼈在浏览器上的操作⾏为,⾃动的打开浏览器,访问百度⾸⻚,并进⾏⼀系列的搜索和验证等⾏为。
1.3 ⾃动化测试⾦字塔
⾃动化的类型⾮常多,那么到底哪⼀种是最好的?哪⼀种测试的收益会更佳?
这⾥我们介绍测试圈内⾮常著名的⾃动化测试⾦字塔
eg:
前端 UI自动化测试 ;
接口 API/集成/组件测试 :测试人员来编写接口自动化测试和UI自动化测试脚本。
单元测试:通常由开发人员编写单元脚本来执行单元测试。
前端可以看到的元素非常多;文字,图片,输入框,按钮…每个元素的大小,颜色,形状等等都需要进行测试
前端涉及到的不可靠因素太多了编写前端自动化脚本相较于接口自动化脚本而言难度会大一些,消耗的人力和时间成本也会大一些
回报率:
手动/探索性测试 投入时间和精力最多,投资回报率最小
ui自动化测试:投入的时间和精力多,投资回报率小
单元测试(开发人员写完代码之后就执行单元测试,也是最熟悉自己写的代码的人,不需要额外的时间和精力来熟悉代码):投入的人力少但是获得的投资回报率更高
理想的⾃动化测试⾦字塔表达了⾃动化测试的理想情况,利⽤较少的时间和精⼒在单元测试上就能够发现更多有效的问题。
然后实际上在企业中,⾃动化往往是“冰淇淋蛋筒反模式”
⾃动化需要⼤量的初始投资,找到“突破点”,与⼿动测试相⽐,我们开始看到它对⻓期成本产⽣的
积极影响,也能够清楚,这两种测试活动都是完全兼容,产⽣短期和⻓期利益。
对于开发人员来说,相较于测试人员来说不那么注重测试,因此,实际工作中单元测试投入的时间和精力会比较少。
测试人员驱动开发人员来执行单元测试。
2. web⾃动化测试
学到这⾥,希望大家对⾃动化测试能够有⼀定的了解。然后实际在企业中,我们需要对某⼀个特定
的软件进⾏⾃动化的实施,包含但不限于软件所有界⾯的UI⾃动化测试、所有接⼝的接⼝⾃动化测
试。
接下来我们将正式步⼊web⾃动化测试的学习,了解企业中是如何使⽤⼯具来统⼀编写和管理⾃动化
⽤例。
手工测试和自动化测试步骤对比:
(以在百度搜索周杰伦为例)eg:
手动测试:百度搜索关键词“周杰伦” 通过手工测试打开浏览器,需要点击(手动驱使浏览器打开)浏览器软件。
自动化测试:
(1)打开浏览器----->>程序驱动浏览器打开
(2)输入百度网址:https://www.baidu.com
(3)找到输入框,输入关键字“周杰伦”
(4)点击“百度一下”按钮
2.1 驱动
上⾯给⼤家已经介绍过,web系统的测试前提是需要打开浏览器,通过访问web服务器来对服务器界
⾯进⾏⼀系列的操作。对于⼿⼯测试来说,这⼀系列的操作都需要测试⼈员⼿动的,⼀步⼀步的来执
⾏测试。那么对于⾃动化程序来说,程序如何才能打开浏览器并执⾏我们预期的操作流程呢?
驱动⼀词应⽤⼴泛,大家都不会陌⽣。
⻋有了驱动才能够让⻋跑起来。
计算机有了驱动程序就可以与设备(⽿机,摄像头,⻨克⻛,键盘,显⽰器等等设备)进⾏通信
程序想要打开web浏览器就需要安装web驱动(即WebDriver),WebDriver 以本地化⽅式驱动浏览器。
安装驱动(这个了解就好,webdriver-manager更好用):
2.1.1 安装驱动管理
若通过安装驱动的⽅式来启动浏览器,每次浏览器更新后对应的驱动也需要更新,为了解决这个问题,selenium中提供了驱动管理⼯具webdriver-manager,有了webdriver-manager⽆需⼿动安装浏览器驱动,即使浏览器更新也不会影响⾃动化的执⾏。
命令:pip install webdriver-manager
驱动管理:
webdriver-manager⽀持的python版本为:3.7~3.11
WebDriver Manager是⼀个开源的命令⾏⼯具,它可以⾃动下载和安装适⽤于不同浏览器的WebDriver。通过使⽤WebDriver Manager,我们可以确保浏览器驱动版本始终与浏览器版本保持⼀致,从⽽避免因版本不匹配⽽导致的各种问题
2.1.2 selenium库
安装selenium库
selenium版本很多,统⼀使⽤selenium 4.0.0版本
pip install selenium==4.0.0
3. Selenium
万事俱备,只⽋东⻛。
接下来就是使⽤selenium来编写web⾃动化测试脚本。
selenium是⼀个web⾃动化测试⼯具,selenium中提供了丰富的⽅法供给使⽤者进⾏web⾃动化测试。
3.1 ⼀个简单的web⾃动化⽰例
1)检查python解释器,确定selenium库和WebDriverManager库都安装成功并加载到当前项⽬中
2)使⽤selenium编写代码
firstAutotest.py
程序的执行速度非常快,若想要看到具体的执行流程,可以通过添加等待。
import timefrom selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import Byfrom webdriver_manager.chrome import ChromeDriverManager# 编写自动化脚本,具体步骤
#1、打开浏览器----驱动管理
ChromeIns = ChromeDriverManager().install()
### 创建谷歌浏览器驱动对象
driver = webdriver.Chrome(service=Service(ChromeIns))
time.sleep(2)
#2、输入百度网址:https://www.baidu.com
driver.get("https://www.baidu.com")
time.sleep(3)
#3、找到百度输入框,输入关键词“易烊千玺”
driver.find_element(By.CSS_SELECTOR,"#chat-textarea").send_keys("易烊千玺")
time.sleep(2)
#4、点击"百度一下"按钮
ele = driver.find_elements(By.CSS_SELECTOR,"#chat-submit-button")
ele[1].click()
time.sleep(2)
#5、关闭浏览器
driver.quit()
程序的执行速度非常快,若想要看到具体的执行流程,可以通过添加等待。
查看页面元素的方式:
1、鼠标在页面右键—>检查
2、键盘快捷键:ctrl+shift+i
跳转到前端代码后,鼠标移动到当前行,右键–>copy–>(选择复制方式)
复制方式:选择器、xpath、ID、class_name
3.2 selenium+驱动(webdriver-manager)+浏览器的⼯作原理
实现web⾃动化测试需要浏览器、浏览器驱动、selenium⾃动化脚本。这三者是如何交互最终实现web的⾃动化测试?
- 通过selenium编写的⾃动化脚本代码中在ChromeDriverService中创建⼀个服务
- 通过创建好的服务打开webdriver,安装在本地的驱动服务IP为localhost,PORT为ChromeDriverService中创建的端⼝号,该服务地址为selenium向webdriver发送请求的服务地址。
- 向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再次对浏览器操作需携带此id
- 打开浏览器后,所有的selenium的操作(访问地址,查找元素等)均通过创建好的服务链接到webdriver,然后使⽤execute发送请求
- 驱动收到请求并对请求进⾏解析,转成浏览器能够解析的脚本并发送给浏览器,浏览器通过请求的内容执⾏对应动作
- 浏览器再把执⾏的动作结果通过浏览器驱动程序返回给测试脚本
查看代码报错:
总结
以上就是软件测试之自动化测试概念篇(沉淀中)的全部内容了,喜欢博主写的内容可以一键三连支持博主!!!!