学习路线:自动化测试介绍及学习路线-优快云博客
参考博主:Web自动化测试 - 博客园
一、Web自动化测试
1.1 概念
Web 测试是指通过编写自动化脚本,模拟用户在 Web 浏览器中的各种操作,如点击按钮、输入文本、选择下拉框等,来验证 Web 应用程序的用户界面(UI)是否符合预期设计,功能是否正常工作的过程。其性质属于UI层的黑盒测试范畴
1.2 适用场景
- web界面稳定,需求变动少
- 项目维护周期长
- 频繁的回归测试
- 项目进度压力不大
- 被测系统开发较为规范,具备可测试性
- 测试人员具有一定的编程能力
1.3 WEB测试的主流测试工具
收费工具
QTP套件(惠普公司):VB语言编写
- 功能自动化工具:QTP
- 性能自动化工具:LoadRunner
- 安全自动化工具:WebInspect
- 缺陷管理工具:QC
QTP (QuickTest Professional) 是惠普公司(现为 Micro Focus)开发的一款自动化测试工具,用于自动化测试桌面、Web和移动应用程序。QTP 提供了一个直观易用的界面,支持录制和回放测试脚本,同时也支持使用 VBScript 进行脚本编写和定制。QTP 提供了强大的对象识别和操作能力,可以识别各种控件和元素,并对其进行操作,同时还支持数据驱动和关键字驱动测试等功能。
Silktest:C#语言编写
SilkTest 是由 Micro Focus 出品的另一款自动化测试工具,用于自动化测试桌面、Web和移动应用程序。SilkTest 提供了强大的脚本编写能力,支持多种脚本语言(包括 C#、VBScript 和 JavaScript 等),并提供了丰富的函数库和工具集。SilkTest 也具有优秀的对象识别功能,可以准确地识别和操作各种应用程序控件和元素。此外,SilkTest 还支持跨平台测试,可以在不同操作系统和环境下执行测试。
免费工具(主流常用)
- RobotFramework
Robot Framework是一个通用的自动化测试框架,它支持关键字驱动的测试,并且可以用于不同类型的测试,包括Web自动化测试。Robot Framework提供了丰富的库和插件,可以与不同的工具集成,包括Selenium。
- Python+selenium/Java+selenium套件
Selenium是一个用于测试Web应用程序的工具集合,其中包括Selenium WebDriver,它是一个用于自动化浏览器操作的工具。结合Python或Java编程语言,可以更灵活地编写Web自动化测试脚本,并实现各种复杂的测试场景。
浏览器:Chrome/Edge/IE/Firefox/Safari
浏览器驱动:driver(chromedriver/microsoftWebdriver/IEDriverServer/geckodriver)
程序语言:Python
功能测试工具:selenium
接口测试:requests/jmeter/postman
性能测试:loadrunner
抓包工具:Fildder
本文文章聚焦于python+selenium的使用
补充:
下载参考: Selenium+WebDriver 各浏览器驱动下载与使用 - 苏念雨 - 博客园
1.4 Web自动化测试方法和流程
web自动化测试流程和功能测试基本一致:
- 需求分析:明确 Web 应用的功能需求和 UI 设计要求,确定需要测试的页面和操作流程。
- 环境搭建:安装测试工具和相关依赖,配置浏览器驱动,确保测试环境正常运行。
- 测试计划
- 用例设计
- 脚本编写:根据测试用例,使用选定的编程语言和测试工具编写自动化测试脚本,拟用户在浏览器中的操作,如点击、输入、选择等,以验证页面的交互功能是否正常
- 脚本执行:运行自动化测试脚本,记录测试结果,查看是否有测试用例失败。
- 结果分析:对测试结果进行分析,找出失败的原因,如元素定位失败、页面加载超时、功能逻辑错误等,并及时反馈给开发人员进行修复。
- 缺陷管理:将发现的缺陷记录在缺陷管理系统中,并跟踪处理过程
- 持续集成:将WEB自动化测试与持续集成工具(如Jenkins、Travis CI)结合,在每次代码变更时自动运行测试,确保代码质量。
用例设计:
Web自动化测试一般使用的设计测试用例的方法跟功能测试相同,使用等价类划分,边界值,因果图,场景法等等
脚本编写:
Web自动化测试一般会采用po模式的设计模式进行脚本编写
PO 模式即 Page Object Model(页面对象模型),它是一种在 Web 自动化测试中广泛应用的设计模式。其核心思想是将 Web 页面的元素定位、操作和业务逻辑进行封装减少冗余代码,这样在后期维护中,若元素定位发生变化, 只需要调整页面元素封装的代码,提高测试用例的可维护性、可读性。
PO模式可以把一个页面分为三层,对象库层、操作层、业务层。
1. 对象库层
对象库层:封装定位元素的方法。
- 功能:封装定位元素的方法,负责定义页面上各个元素的定位方式和定位值。通过使用合适的定位策略(如 ID、Name、XPath、CSS Selector 等)来唯一标识页面元素。
- 示例:以登录页面为例,使用 Python 和 Selenium 实现对象库层的代码如下:
from selenium.webdriver.common.by import By
class LoginPageLocators:
USERNAME_INPUT = (By.ID, 'username')
PASSWORD_INPUT = (By.ID, 'password')
LOGIN_BUTTON = (By.ID, 'login-button')
2. 操作层
操作层:封装对元素的操作。
- 功能:封装对元素的具体操作,调用对象库层定义的元素定位方法,实现对页面元素的各种操作,如输入文本、点击按钮、选择下拉框等。
- 示例:继续以登录页面为例,操作层的代码如下:
from pages.base_page import BasePage
from .login_page_locators import LoginPageLocators
class LoginPage(BasePage):
def __init__(self, driver):
super().__init__(driver)
self.locators = LoginPageLocators()
def enter_username(self, username):
element = self.find_element(self.locators.USERNAME_INPUT)
element.send_keys(username)
def enter_password(self, password):
element = self.find_element(self.locators.PASSWORD_INPUT)
element.send_keys(password)
def click_login_button(self):
element = self.find_element(self.locators.LOGIN_BUTTON)
element.click()
其中 BasePage
是一个基础页面类,包含一些通用的方法,如 find_element
用于查找元素。
3. 业务层
业务层:将一个或多个操作组合起来完成一个业务功能。
- 功能:将一个或多个操作层的操作组合起来,完成一个完整的业务功能。业务层的方法通常对应着用户在页面上执行的一系列连贯操作,如登录、注册、下单等。
- 示例:登录页面的业务层代码如下:
class LoginPage(BasePage):
# ... 前面操作层的代码 ...
def login(self, username, password):
self.enter_username(username)
self.enter_password(password)
self.click_login_button()
比如登录:需要输入帐号、密码、点 击登录三个操作。
测试脚本只需要调用业务层代码就可以完成
当出现页面需要的时候只需要测试代码可以完全不用修改只需要修改操作层就好了
二、Selenium环境搭建
2.1 Selenium简介
最初由ThoughtWorks公司开发于2004年。它的第一个版本是Selenium 1.0,包括IDE(集成开发环境)、Grid和RC(远程控制器)
在2006年,Google加入了对Selenium的支持,并推出了WebDriver。
2011年,Selenium 2.0发布,结合了1.0版本和WebDriver的功能。
2016年,Selenium 3.0发布,弃用了Selenium RC,保留了前几个版本的主要功能,并进行了一些改进
2021年发布的Selenium 4.0,引入了专业版并需要付费使用。
Selenium主要包括以下几个核心组件:
- Selenium WebDriver:WebDriver是Selenium的核心组件,负责直接与浏览器进行通信,控制浏览器执行各种操作。
- Selenium IDE:一个用于录制和回放用户交互的浏览器插件,虽然它不如WebDriver强大,但对于简单的自动化测试任务非常有用。
- Selenium Grid:一个用于分布式测试的工具,允许同时在多台机器上运行测试,提高测试效率。
2.2 selenium的安装及配置浏览器驱动
- 安装selenium
pip install selenium #python安装selenium类库
pip list packages #检查是否安装成功
- 安装浏览器驱动--Edge浏览器
selenium支持的浏览器:Chrome/Edge/IE/Firefox
安装浏览器驱动时需要确保版本一致,查看浏览器版本
在这个网站上下载驱动:Microsoft Edge WebDriver |Microsoft Edge 开发人员。
上图中看到我的Edge版本是134.0.3124.51。进入网站下载驱动。
将其解压到python解释器目录或一个指定路径下。比如
D:/WebDriver
路径。并重命名为MicrosoftWebDriver.exe
方便记忆
- 测试驱动
from selenium import webdriver
from selenium.webdriver.edge.service import Service #使用浏览器驱动的方法
#selenium4.0
e=Service(executable_path=r'D:\WebDriver\MicrosoftWebDriver.exe') #写入之前解压保存的路径
driver=webdriver.Edge(service=e) #获取浏览器应用
driver.maximize_window() #窗口最大化
driver.get("http://www.baidu.com") #打开浏览器访问百度