自动化测试开发

自动化测试用例设计

自动化测试用例一般可以由手工测试用例转化而来,需要注意:

  • 不是所有的手工测试用例都可以转为自动化测试用例
  • 考虑到脚本开发的成本,不需要选择太复杂的用例。如果有必要,可以把流程拆分成多个用例来实现脚本。
  • 选择的用例最好可以构建成场景。例如,一个功能模块,分成多个测试用例,多个测试用例使用同一个场景,
  • 选取的用例可以是你认为重复执行,很繁琐的一部分,例如字段验证,提示信息验证这类,这部分适用于回归测试。
  • 选取的用例可以是主体流程,这部分适用于冒烟测试。
    在编写自动化测试用例过程中应该遵循以下原则:
  • 一个用例为一个完整的场景,从用户登录系统到最终退出并关闭浏览器。
  • 一个用例只验证一个功能点,不要试图在用户登录后把所有的功能都验证一遍。
  • 尽可能少的编写逆向测试用例。一方面因为逆向逻辑的用例很多(例如,手机号输错有几十种情况)
  • 另一方面自动化测试脚本本身很脆弱,复杂的逆向逻辑用例实现起来较为麻烦且容易出错。
  • 用例和用例之间尽量避免产生依赖(高内聚一个模块中的功能要全面,低耦合多个模块尽量不产生联系)
  • 一条用例完成测试之后要将测试场景进行还原,以免影响其他测试用例的执行。
    tip:如果复杂度过高,出错误的概率会很高。(圈复杂度算法)
    有验证码的时候该怎么进行自动化?
    1.让开发暂时屏蔽验证码,将验证码换成万能码(“aaaa”)。
    2.懂得机器学习,可以训练脚本,可以达到99%以上识别成功率。
    3.调用OCR接口,去解析图片中的验证码。
    线性测试模型:最基本的代码组织形式,单纯的模拟用户完整的操作场景,测试用例的开发和维护的成本较高。
    缺点:
    1.维护性差
    2.模块比较多,运行起来不方便,写一个主运行模块main
    3.如果所有用例的步骤放在一起,可读性差。
#需求使用线性脚本的模型,编写电商系统的正向用例的脚本:
#打开淘宝系统首页
#点击注册按钮
#输入有效的用户名
#输入有效的邮箱
#输入有效的确认密码
#已阅读按钮
#点击“同意协议  立即注册”
from selenium import webdriver
from time
driver = webdriver.Firfox()#创建浏览器对象
driver.implicity.wait(10)#隐式等待10秒钟
driver.get("http://www.taobao.com")、
url1 = driver.current_url#获取淘宝首页的URL地址
if url == "http://www.taobao.com":#断言首页地址是否正确
	print("首页打开是正确的")
elseprint("首页打开失败")
driver.find_element_by_link_text("免费注册").click()#点击免费注册按钮
url2 = driver.current_url
driver.find_element_by_id("username").send_keys("123456789")#在用户名文本框内输入123456789
driver.find_element_by_id("email").send_keys("dvugaigoiashoasho")#在邮箱文本框内输入dvugaigoiashoasho
driver.find_element_by_id("passward").send_keys("234548446846")#在密码文本框内输入234548446846
driver.find_element_by_id("repassward").send_keys("234548446846")#在确认密码文本框内输入234548446846
driver.find_element_by_link_text("同意协议 立即注册").click()#点击同意协议 立即注册按钮
driver.quit()

模块话驱动测试:把重复的操作独立成公共模块,当用例执行过程中需要用到这一模块时就会被调用,最大限度的消除了重复,提高了测试用例的可维护和复用性。

#将脚本中重复的东西转化为模块化的脚本
#脚本中重复的代码抽离出来形成一个模块(模块中的方法)
#需要设计一个方法,这个方法可以提供注册的基本步骤,通过参数传入数据。
def reg(username, email, passward, repassward):
	from selenium import webdriver
	from time
	driver = webdriver.Firfox()#创建浏览器对象
	driver.implicity.wait(10)#隐式等待10秒钟
	driver.get("http://www.taobao.com")、
	url1 = driver.current_url#获取淘宝首页的URL地址
	if url == "http://www.taobao.com":#断言首页地址是否正确
		print("首页打开是正确的")
	elseprint("首页打开失败")
	driver.find_element_by_link_text("免费注册").click()#点击免费注册按钮
	url2 = driver.current_url
	driver.find_element_by_id("username").send_keys("username")#在用户名文本框内输入123456789
	driver.find_element_by_id("email").send_keys("email")#在邮箱文本框内输入dvugaigoiashoasho
	driver.find_element_by_id("passward").send_keys("passward")#在密码文本框内输入234548446846
	driver.find_element_by_id("repassward").send_keys("repassward")#在确认密码文本框内输入234548446846
	driver.find_element_by_link_text("同意协议 立即注册").click()#点击同意协议 立即注册按钮
	driver.quit()
if __name__ == __main__:
	reg(123456789, dvugaigoiashoasho, 234548446846, 234548446846)
else:
	print("有问题")

创建一个类的模块化测试模型的例子:


from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
import time
class The_login(self)def open_browser(self):
		self.driver.Firfox()
		self.driver.get("http://www.taobao.com")
	def login(self):
		self.driver.find_elemenet_by_link_text("登录").click()
		self.driver.find_element_by_xpath("//*[@id='username']").send_keys("habnweheuj")
		self.driver.find_element_by_xpath("//*[@id='passward']").send_keys("123456")
		self.driver.find_element_vy_xpath("//*[@id='login_form']/div/a").click()
		time.sleep(3)
	def logout(self):
		ele = self.driver.find_element_by_xpath("//*[@id='top-userabr']/a")
		ActionChains(self.driver).move_to_element(ele).perform()
		self.driver.find_element_by_link_text("退出").click()
	def quitB(self):
		self.driver.quit()
if __name__ = "__main__":
	aa = The_login()
	aa.login()
	aa.logout()
	aa.quitB()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值