自动化测试模型

1、线性测试:每个测试脚本相对独立,一个脚本文件都是独立编写测试内容等,任何一个脚本都可以拿出来单独执行。开发和维护的成本很高。

2、模块化驱动测试:把重复的操作单独成立公关模块。如登陆模块,写好之后后续用例只需要调用对应模块即可。较好的解决了脚本重复问题。

3、数据驱动测试:针对测试数据改变而影响数据驱动测试而提出的。就是将测试数据做成参数化。不仅解决脚本重复的问题,还增加了可重用性和可维护性。测试数据改的时不需要修改测试代码。

4、关键字驱动测试:如目前市面的工具:QTP、Robot Frame.将底层代码封装,给用户提供独立的图形界面。以填表格的形式免除测试人员对写代码的恐惧,从而降低脚本的编写难度。

 

综上所述:UI 层的自动化测试的发展 由脚本发展到了成熟的自动化工具。我们学习自动化的过程也是从线性模型开始学习。工作过程中要实现的UI自动化则是采用模块驱动和数据驱动进行,当周围环境成熟到一定程度之后,可以将UI自动化测试做成关键字驱动测试,实现图形界面的自动化工具。

举例:

1、模块化驱动测试:

login.py
class LoginModule():
    def login(self, driver, username, password):
        # 输入用户名
        # 进入用户名输入页面
        driver.find_element_by_id("lbNormal").click()
        # 定位元素的时候一直报无法定位,后面查了资料才发现,这里有一个iframe
        iframe = driver.find_element_by_xpath('//div[@id="loginDiv"]/iframe')
        driver.switch_to.frame(iframe)

        driver.find_element_by_xpath("//div[@class = 'u-input box']/input[@name = 'email']").clear()
        driver.find_element_by_name("email").send_keys(username)
        # driver.find_element_by_id("j-inputtext dlemail j-nameforslide").send_keys(username)
        #用户密码
        driver.find_element_by_name("password").clear()
        driver.find_element_by_name("password").send_keys(password)
       # driver.find_element_by_class_name("j-inputtext dlpwd").send_keys(password)
        #点击登录
        driver.find_element_by_id("dologin").click()

    def loginout(self,driver):
        driver.find_element_by_link_text("退出").click()
        driver.quit()

  

 
测试用例:直接调用设置好的模块即可
loginTest.py from selenium import webdriver from cgi_projects.login import LoginModule driver = webdriver.Firefox() driver.implicitly_wait(10) driver.get("http://www.126.com") LoginModule().login(driver) LoginModule().loginout(driver)

2、数据驱动测试:

 login.py:用户名、密码以参数形式传入

class LoginModule():
    def login(self, driver, username, password):
        # 输入用户名
        driver.find_element_by_id("inputid").clear()
        driver.find_element_by_id("inputid").send_keys(username)
        #用户密码
        driver.find_element_by_name("password").clear()
     driver.find_element_by_name("password").send_keys(password)

        #点击登录
        driver.find_element_by_id("dologin").click()

    def loginout(self,driver):
        driver.find_element_by_link_text("退出").click()
        driver.quit()
from selenium import webdriver
from cgi_projects.login import LoginModule

class logincase():
    def __init__(self):
# 初始化浏览器、等待时长、url等 self.driver
= webdriver.Firefox() self.driver.implicitly_wait(10) self.driver.get("http://www.126.com") def test_admin_login(self): username = 'admin' password = '123' LoginModule().login(self.driver,username,password) self.driver.quit() def test_guest_login(self): username = 'guest' password = '123' LoginModule().login(self.driver,username,password) self.driver.quit() #测试用例只需要关注用户名和密码,调用不同的方法,传入不同的参数测试用户登录 logincase().test_admin_login() logincase().test_guest_login()

 

1.作者:妮妮酱
2.出处:https://www.cnblogs.com/ninijiang/p/10990925.html 
3.本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 
4.如果文中有什么错误,欢迎指出。以免更多的人被误导。 

posted @ 2019-06-08 16:04  妮妮酱  阅读(805)  评论(0编辑  收藏  举报