精华内容
下载资源
问答
  • SNMP接口信息模型自动化测试方法研究与实现,刘益畅,陈颖慧,SNMP接口信息模型测试是一项复杂且繁重的工作,仅靠人工手动测试不但效率低下,而且测试质量有可能受到测试人员的知识结构、态度��
  • 1 自动化测试模型 自动化测试模型可分为:线性测试,模块化与类库,数据驱动测试,关键字驱动测试。 1.1 线性测试: 通过录制或编写对应用程序的操作步骤会产生相应的线性脚本,每个线性脚本相对独立,并不产生...

    1 自动化测试模型

    自动化测试模型可分为:线性测试,模块化与类库,数据驱动测试,关键字驱动测试。

    1.1 线性测试:

        通过录制或编写对应用程序的操作步骤会产生相应的线性脚本,每个线性脚本相对独立,并不产生依赖与调用,即单纯的模拟用户完整的操作场景,在前面几章提到的例子都属于线性测试。

    1.2 模块化与类库

        线性测试是不容易维护的,因此新的自动化测试模型出现了,做法很简单,借鉴了编程语言中的模块化思想,把重复的操作单独封装成公共模块,在测试用例执行过程中,当需要用到模块封装时对其进行调用,这样就最大限度的消除了重复,从而提高了测试用例的可维护性。

    1.3 数据驱动测试

        虽然模块化测试很好的解决了脚本重复的问题,但是自动化测试脚本在开发过程中还是有很多不便,例如,在测试登录时,虽然过程是一样的,但是数据是不同的,模块化测试没有解决这个问题。于是,数据驱动测试出现了。    数据驱动测试:数据的改变驱动自动化测试的执行,最终引起测试结果的改变。即把数据驱动所需的测试数据参数化,我们可以用多种方式来存储和管理这些参数化的数据。

    1.4 关键字驱动测试

        关键字驱动测试又被称为 表驱动测试 或 基于动作字测试。这类框架会把自动化操作封装成“关键字”,避免测试人员直接接触代码,多以“填写格” 的形式降低脚本的编写难度。

    2 模块化与参数化

    模块化与参数化一般需要配合使用,即在创建函数或类方法时为它们设置入参,从而使它们可以根据不同的参数执行相应的操作。

    比如在某些测试用例中都要用到登录,登出,就可以将登录,登出操作模块化,在使用时直接调用即可

    from selenium import webdriver
    
    chrome_driver_path = r"C:\Users\Administrator\Envs\selenuimAutoTest\Lib\site-packages\selenium\webdriver\chrome\chromedriver.exe"
    
    driver = webdriver.Chrome(executable_path=chrome_driver_path)
    
    class Mail():
    
        def __init__(self, driver):
            self.driver = driver
    
        def login(self, username, password):
            self.driver.switch_to.frame("x-URS-iframe")
            self.driver.find_element_by_name("email").clear()
            self.driver.find_element_by_name("email").send_keys(username)
            self.driver.find_element_by_name("password").clear()
            self.driver.find_element_by_name("password").send_keys(password)
            self.driver.find_element_by_name("dologin").click()
    
        def logout(self):
            self.driver.find_element_by_link_text("退出").click()

    3 读取数据文件

    虽然前面的例子中用到了参数化,但是大多数测试更倾向于把数据放到数据文件中,下面介绍几种常见的读取数据文件的方式

    3.1 读取txt文件

        python提供了一下几种读取txt文件的方法

        

    read():读取整个文件
    
    readline():读取一行数据
    
    readlines():读取所有行的数据
    简单介绍一下,如下就可以拿到txt文件中数据,然后就可以对其进行操作了
    
    with open("test.txt", "r") as f:
        allData = f.readlines()
        
    for line in allData:
        pass

    3.2 读取csv文件

        csv文件可以用来存固定字段的数据,使用率很高,那么如何操作csv文件呢

    import csv
    import codecs
    from itertools import islice
    
    # 读取csv文件
    data = csv.reader(codecs.open("test.csv", "r", encoding="utf_8_sig"))
    
    if data:
        for line in islice(data, 1, None):
            pass

    注意:python读取csv文件比较简单:但是通常会遇到两个问题:

        (1) 中文乱码问题。通过codecs提供的open方法,在打开文件时指定编码类型,然后通过csv的reader方法读取文件,可以避免编码问题

        (2) 跳过csv的第一行。我们都知道csv文件第一行都会定义为字段名,所以在读取时一般都会跳过第一行。即islice()函数,它返回一个迭代器,第一个参数指定迭代对象,第二个参数指定开始迭代的位置,第三个参数指定结束位。

    3.3 读取json

    json是一种清香剂的数据交换格式,被广泛使用,python也可以读取操作json文件/数据

    import json
    
    with open("test.json", "r") as f:
        data = f.read()
        
    json_data = json.loads(data)

     

    展开全文
  • 自动化测试模型

    2019-11-28 20:45:35
    自动化测试模型 自动化测试模型可分为线性测试、模块化与类库测试、数据驱动测试和关键字驱动测试。 1.线性测试 通过录制或编写应用程序的操作步骤,产生相应的线性脚本,每个线性脚本相对独立,不产生依赖和调用。...

    自动化测试模型

    自动化测试模型可分为线性测试模块化与类库测试数据驱动测试关键字驱动测试
    1.线性测试
    通过录制或编写应用程序的操作步骤,产生相应的线性脚本,每个线性脚本相对独立,不产生依赖和调用。只是单纯地模拟用户完整的操作场景,例如UI自动化测试,工作量大且维护成本很高。
    2.模块化与类库测试
    为了减少线性测试的维护工作量,借鉴编程语言中的模块化思想,把重复的操作单独封装成公共模块,在测试用例执行过程中,当需要用到模块封装时对其进行调用,这样就最大限度地消除了重复性工作,提高了测试用例的可维护性。
    3.数据驱动测试
    通过数据的改变驱动自动化测试的执行,最终引起测试结果的改变,这就是数据驱动测试。即把数据驱动所需的测试数据参数化,然后通过多种方式来存储和管理这些参数化的数据。
    4.关键字驱动测试
    把自动化操作封装成“关键字”,避免测试人员直接接触代码,以“填写表格”的形式降低脚本的编写难度,这就是关键字驱动测试,又称为表驱动测试或基于动作字测试。Robot Framework就是主流的关键字驱动测试框架。

    展开全文
  • 自动化测试模型(一)自动化测试模型介绍 一个自动化测试框架就是一个集成体系,在这一体系中包含测试功能的函数库,测试数据源,测试对象标准,以及各种可重用的模块。自动化测试在发展过程中经历了以下几个...

    自动化测试模型(一)自动化测试模型介绍

     

    一个自动化测试框架就是一个集成体系,在这一体系中包含测试功能的函数库,测试数据源,测试对象标准,以及各种可重用的模块。自动化测试在发展过程中经历了以下几个阶段,模块驱动测试,数据驱动测试及对象驱动测试。

    一、自动化测试模型介绍

    线性测试

    通过录制或编写脚本,一个脚本完成一个场景(一组完整功能操作),通过对脚本的回放进行自动化测试。之前介绍的webdriver API所编写的脚本也是这种方式。

    从上图可以看出,可以看出线性测试的优势就是每一个脚本都是独立的,任何一个脚本文件拿出来就能单独运行;当然,缺点也很明显,用例的开发与维护成本很高:

    一个用例对应一个脚本,假如登陆发生变化,用户名的属性发生改变,不得不需要对每一个脚本进行修改,测试用例形成一种规模,我们可能将大量的工作用于脚本的维护,从而失去自动化的意义。这种模式下数据和脚本是混在一起的,如果数据发生变也需要对脚本进行修改。这种模式下脚本没有可重复使用的概念。

    1、模块化与类库

    将脚本中重复可复用的部分拿出来写成一个公共的模块,需要的时候就调用它,可以大大提高测试人员编写脚本的效率。

    通过阅读上面的代码发现,我们可以把脚本中相同的部分代码独立出来,形成模块或库;这样做有两方面的优点:

    一方面提高了开发效率,不用重复的编写相同的脚本;假如,我已经写好一个登录模块,我后续需要做的就是在需要的地方调用,不同重复造轮子。

    另一方面方便了代码的维护,假如登录模块发生了变化,我只用修改login.py 文件中登录模块的代码即可,那么所有调用登录模块的脚本不用做任何修改。

    2、数据驱动

    数据驱动应该是自动化的一个进步;从它的本意来讲,数据的改变(更新)驱动自动化的执行,从而引起测试结果的改变。这显然是一个非常高级的概念和想法。其实,我们可直白的理解成参数化,输入数据的不同从而引起输出结果的变化。

    不管我们读取的是数组,还是字典、函数,又或者是csv、txt 文件。我们实现了数据与脚本的分离,换句话说,我们实现了参数化。我们传一千条数据,通过脚本的执行,可以返回一千条结果出来。

    3、关键字驱动

    通过关键字的改变引起测试结果的改变。

    QTP、robot framework 等都是以关键字驱动为主的自动化工具,因为这类工具主打的易用性,“填表格”式的关键字驱动帮我们封装了很多底层的东西,我们只要考虑三个问题就可以了:我要做什么? 对谁做?怎么做?

    我们可以把selenium IDE 看做是一种关键字驱动的自动化工具。

    Selenium IDE 脚本分:命令(command)、对象(target)、值(value)

    通过这样的格式去描述不同的对象,从而引起最终结果的改变。也就是说一切以对象为出发点。当然,这样的脚本,显然对于不懂代码的同学非常直观!我要做什么(命令)?对谁做(对象)?怎么做(值)?更高级的关键字驱动,可以自己定义keyword 然后“注册”到框架;从而实现更强大的功能和扩展性。

    如果大家对于学习Python有任何问题,学习方法,学习路线,如何学习有效率的问题,可以随时来咨询我,或者缺少系统学习资料的,我做这行年头比较久,自认为还是比较有经验的,可以帮助大家提出建设性建议,这是我的Python交流qun:785128166,有任何问题可以随时来咨询我。

    展开全文
  • 自动化测试模型 概念 自动化测试模型可以看作自动化测试框架与工具设计的思想。自动化测试不仅仅是单纯写写脚本运行就可以了,还需要考虑到如何使脚本运行效率提高,代码复用、参数化等问题。自动化测试模型分为...

    自动化测试模型

    概念

    自动化测试模型可以看作自动化测试框架与工具设计的思想。自动化测试不仅仅是单纯写写脚本运行就可以了,还需要考虑到如何使脚本运行效率提高,代码复用、参数化等问题。自动化测试模型分为四大类:线性模型,模块化驱动测试、数据驱动、关键词驱动。

     

     

     

     

    线性模型

    线性脚本中每个脚本都相互独立,且不会产生其他依赖与调用,其实就是简单模拟用户某个操作流程的脚本。

    案例:在软件主页自动登录和退出操作

    from selenium import webdriver

    from time import sleep

     

    driver=webdriver.Firefox()

    driver.get("http://localhost")

     

    #输入用户名

    driver.find_element_by_name('username').clear()

    driver.find_element_by_name('username').send_keys('51ttt')

     

    #输入密码

    driver.find_element_by_name('password').clear()

    driver.find_element_by_name('password').send_keys('123456')

     

    #点击登陆

    driver.find_element_by_name('Submit').click()

     

    sleep(3)

     

    #退出

    driver.find_element_by_link_text('退出').click()

    sleep(2)

    driver.switch_to_alert().accept()

     

    sleep(3)

    driver.quit()

     

     

    模块化驱动测试

    线性模型虽然每个用例都可以拿出来独立运行,但是用例之间重复代码很多,开发、维护成本高。其实把重复的操作代码封装为独立的公共模块,当用例执行时需要用到这部分,直接调用即可,这就是模块驱动的方式。比如登录系统、退出登录、截图函数等等。

    from selenium import webdriver

    from time import sleep

     

    class Login():

        def user_login(self,driver):

            driver.find_element_by_name('username').clear()

            driver.find_element_by_name('username').send_keys('51ttt')

     

            driver.find_element_by_name('password').clear()

            driver.find_element_by_name('password').send_keys('123456')

     

            driver.find_element_by_name('Submit').click()

     

        def user_logout(self,driver):

            driver.find_element_by_link_text('退出').click()

            sleep(2)

            driver.switch_to_alert().accept()

     

    if __name__=='__main__':

        driver = webdriver.Firefox()

        driver.get("http://localhost/")

        driver.implicitly_wait(10)

     

        Login().user_login(driver)

        Login().user_logout(driver)

     

    调用登录模块

    from LoginClass import *

     

    driver = webdriver.Firefox()

    driver.get("http://localhost/")

    driver.implicitly_wait(10)

     

    Login().user_login(driver)

    Login().user_logout(driver)

    数据驱动测试

    模块驱动的模型虽然解决了脚本的重复问题,但是需要测试不同数据的用例时,模块驱动的方式就不很适合了。 数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。 装载数据的方式可以是列表、字典或是外部文件(txt、csv、xml、excel),目的就是实现数据和脚本的分离。

    from selenium import webdriver

    from time import sleep

     

    class Login():

        def user_login(self,driver,username,password):

            driver.find_element_by_name('username').clear()

            driver.find_element_by_name('username').send_keys(username)

     

            driver.find_element_by_name('password').clear()

            driver.find_element_by_name('password').send_keys(password)

     

            driver.find_element_by_name('Submit').click()

        def user_logout(self,driver):

            driver.find_element_by_link_text('退出').click()

            sleep(2)

            driver.switch_to_alert().accept()

    数据驱动调用——实现多个账户登录

    from LoginClass_Para import *

    from  selenium import webdriver

    from time import sleep

     

    driver=webdriver.Firefox()

    driver.get("http://localhost")

    driver.implicitly_wait(10)

     

    Login().user_login(driver,"51ttt",'123456')

    sleep(3)

    Login().user_logout(driver)

     

    Login().user_login(driver,"51Pro",'123456')

    sleep(5)

    Login().user_logout(driver)

    关键字驱动测试

    通过关键字的改变引起测试结果的改变叫关键字驱动测试。 selenium IDE也是一种传统的关键字驱动的自动化工具,Robot Framework 是一个功能更强大的关键字驱动测试框架

     

    展开全文
  • 软件测试中基于模型生成自动化测试用例在前面一文使用NModel自动生成测试用例中,介绍了如何通过给待测试的程序建模,生成测试用例的方法。但前面文章的问题是,生成的都是手工的测试用例,如果让测试人员手工执行...
  • 今天跟着网上教程学习了一种关键字模型...目标:实现一个百度搜索的关键字模型自动化测试脚本。 搭建步骤: 新建三个Python Package,并分别创建3个py文件: config包,创建data.xls文件,用来存放测试数据文件。 u
  • 自动化测试介绍 自动化测试(Automated Testing),是指把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些测试工具或框架,编写自动化测试用例,来模拟手工测试过程。比如说,在项目迭代...
  • 自动化测试模型,即自动化测试框架与工具设计的思想。有四种常用模型,分别是线性模型、模块化驱动模型、数据驱动模型和行为驱动模型(也称关键字驱动模型)。 在工作实践中,最常用的是模块化驱动和数据驱动两种,...
  • Python 自动化测试全攻略:五种自动化测试模型实战详解
  • 自动化测试模型可以看作自动化测试框架与工具设计的思想。随着自动化测试技术的发展,演化为以下几种模型: 线性测试 模块化驱动侧式 数据驱动测试 关键字驱动测试 线性测试 线性测试较为简单,前几篇文章...
  • 自动化测试介绍 自动化测试(Automated Testing),是指把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些测试工具或框架,编写自动化测试用例,来模拟手工测试过程。比如说,在项目迭代...
  • 自动化测试框架是一个集成体系,这个体系中包含测试功能的函数库、测试数据源、测试对象识别标准以及可重用的模块。 一、线性测试 线性测试:通过录制或编写脚本,一个脚本完成一个场景(一组完成功能操作)通过对...
  • 自动化测试_测试模型

    2017-10-10 21:18:00
    随着自动化测试技术的发展,演化为以下几种模型:线性测试、模块化驱动测试、数据驱动测试和关键字驱动测试。 线性测试  通过录制或编写对应用程序的操作步骤产生相应的线性脚本,每个测试脚本相对独立,且不产生...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,336
精华内容 1,334
关键字:

模型自动化测试