目录
自动化测试用例
自动化测试用例一般可以由手工测试用例转化来,但是不是所有的手工测试用例都要转化为自动化测试用例
- 考虑到脚本开发的成本,不要选择流程太复杂的用例,如果必要,可以把流程差分为多个用例来实现脚本。
- 选择的用例最好可以构建成场景,如一个功能模块,分成多个用例,多个用例使用同一个场景
- 重复执行,繁琐的部分,如字段验证,提示信息验证等,适用于回归测试
- 选取的用例可以是主体流程,适用于冒烟测试
遵循原则
- 一个用例为一个完整的场景,从用户登录系统到最终退出并关闭浏览器
- 一个用例只验证一个功能点,不要在用户登录后把所有功能验证一遍
- 尽可能少的编写逆向测试用例,一方面因为逆向逻辑的用例很多,二是复杂的实现起来麻烦易出错
- 用例之间尽量避免产生依赖
- 一条用例完成测试后需要对测试场景进行还原,以免影响其他用例的执行
自动化测试用例设计
测试点转为测试用例的原则
- 设计一条正向用例,覆盖足够多的有效等价类数据
- 设计一条反向用例,需要覆盖一条无效等价类数据,其他数据一概使用正向数据
验证码自动化方法
- 开发暂时屏蔽验证吗,使用万能吗
- 机器学习训练样本
- 调用OCR接口,解析图片中的验证码
自动化测试模型
线性测试
- 最基本的代码组织形式,单纯的模拟用户步骤或场景
- 维护性差
- 模块多,运行复杂,可以写在一个主运行模块中
- 所有用例步骤放在一个模块中,可读性差
from selenium import webdriver
import time
#获取qq邮箱的url
driver=webdriver.Firefox()
driver.get("http://mail.qq.com")
time.sleep(1)
#切换到内部frame
frm = driver.find_element_by_id("login_frame")
driver.switch_to.frame(frm)
#输入用户名密码点击登录
driver.find_element_by_id("u").send_keys("919917003")
driver.find_element_by_id("p").send_keys("**********")
driver.find_element_by_xpath('//*[@id="login_button"]').click()
模块化驱动测试
把重复的操作独立成公共模块,当用例执行过程中需要用到这一模块则被调用
from selenium import webdriver
import time
class mt():
#初始化qq pwd
def __init__(self,qq,password):
self.driver = webdriver.Firefox()
self.qq = qq
self.password = password
time.sleep(1)]
#登录
def login(self):
self.driver.get("http://mail.qq.com")
self.driver.switch_to.frame