自动化测试基础

一. 概述

1.1 自动化测试演变

萌芽期:
代码代替手工
覆盖性、时效性、重复性

发展期:
线性测试
模块化驱动测试
数据驱动测试
关键字驱动测试

爆发期:
CI/CD

未来:
AI-测试终结者

1.2 自动化测试特点

核心目的:提高测试效率,而不是发现BUG。
自动化的劣势:
1.无法进行主观判断,如界面布局是够好看
2.需求频繁变更时,维护成本会很高

1.3 自动化测试流程

切入点:功能相对稳定的版本开始切入
在这里插入图片描述

1.4 自动化测试用例

  • 自动化测试用例来源于手工测试用例
  • 不是所有手工用例都要自动化

1.4.1 自动化用例编写原则

在这里插入图片描述

1.5 自动化测试脚本开发

线性测试:一个主方法,调用测试用例
缺点:代码冗余、可维护性差
模块驱动测试:封装功能模块
优点:提高代码复用性、可维护性
数据驱动测试:
字典、txt、csv、excel、数据库
关键字驱动测试:
target、command、value

二. Python+Selenium+UnitTest(关键字驱动测试框架)

2.1 脚本录制工具

2.1.1 Selenium IDE

关键字驱动

  • Target:对谁操作?(如文本框可以根据属性定位)
  • Command:找到之后要干嘛?
  • Value:键入什么?

安装:使用FireFox添加组件

2.1.2 katalon

安装:使用FireFox添加组件

2.2 Selenium脚本开发

2.2.1 Selenium 环境搭建

1.准备python开发环境,配置python环境变量
2.pip3 install selenium
3.将驱动放到python环境变量根目录 CMD : where python
各版本chromedriver下载

2.2.2 Demo

from selenium import webdriver

# 创建浏览器对象
driver = webdriver.Chrome()

# 测试用例
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()

# 关闭浏览器
driver.quit()

2.2.3 常用操作

2.2.3.1 页面元素定位、操作

定位
在这里插入图片描述

操作
在这里插入图片描述

2.3.3.2 浏览器操作

在这里插入图片描述

2.3.3.3 鼠标、键盘操作

在这里插入图片描述

ActionChains动作封装

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
# 创建浏览器对象
driver = webdriver.Chrome()

# 测试用例
driver.get("https://www.baidu.com")
driver.maximize_window()
time.sleep(2)
setUp = driver.find_element_by_link_text("新闻")
ActionChains(driver).move_to_element(setUp).perform()


# 关闭浏览器
# driver.quit()

在这里插入图片描述

2.3.3.4 警告窗口处理

在这里插入图片描述

2.3.3.5 多窗口、多表单处理

句柄操作:句柄:浏览器窗口的标识

from selenium import webdriver
# 创建浏览器对象
driver = webdriver.Chrome()

# 测试用例
driver.get("https://www.taobao.com/")
driver.find_element_by_link_text("女装").click()
handlers = driver.window_handles
print(handlers)
driver.switch_to_window(handlers[0])

# 关闭浏览器
# driver.quit()

多表单:一个页面可以嵌套另一个页面,如frame/iframe技术,需要将driver对象给内层页面才能进行操作
在这里插入图片描述

2.3.3.6 同步点(设置元素等待)
# 强制等待
time.sleep(5)
# 隐式等待:浏览器会在设定时间内不断的刷新页面去寻找我们需要的元素,若超时,抛出异常(全局的)
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("https://mail.qq.com/")
# 显式等待:针对某一元素设置等待条件(同时设置时,隐式等待优先级高)
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
element = WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.ID, "kw")))
element.send_keys("selenium")

2.3. UnitTest测试框架

优点:

  • 提供用例组织与执行
  • 提供丰富的断言方法
  • 提供丰富的日志和报告

TestCase:测试用例,setup、test、teardown
TestSuit:测试套,多条测试用例
TestLoader:批量加载用例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值