盘点四种自动化测试模型实例及优缺点 |
您所在的位置:网站首页 › 优势种例子 › 盘点四种自动化测试模型实例及优缺点 |
一,线性测试
1.概念: 通过录制或编写对应应用程序的操作步骤产生的线性脚本。单纯的来模拟用户完整的操作场景。 (操作,重复操作,数据)都混合在一起。 2.优点: 每个脚本相对独立,且不产生其他依赖和调用。 3.缺点: 开发成本高,用例之间存在重复的操作。比如重复的用户登录和退出。 维护成本高,由于重复的操作,当重复的操作发生改变时,则需要逐一进行脚本的修改。 4.线性测试实例 用户登录 以下的用户名密码到时候自己去申请,就不将笔者的用户密码贴出来了。 # coding=utf-8 ''' Created on 2016-7-20 @author: Jennifer Project:简单元素操作登录126邮箱,元素的clear(),send_keys(),click()操作 在定位的时候发现有些元素定位不到,最后发现有iframe,frame中实际上是嵌入了另一个页面。 如果iframe有name或id的话,直接使用switch_to_frame("name值")或switch_to_frame("id值"), 这是最理想的方法,也是最简单好用的方法。 ''' from selenium import webdriver import time driver=webdriver.Firefox() driver.get(r'http://www.126.com/') #字符串加r,防止转义。 time.sleep(3) print '开始登录邮箱' try: assert '126' in driver.title #title是变量,不能title() except AssertionError: print "error:网址输入不正确" else: print "记录日志:网址输入正确" # driver.switch_to_frame('x-URS-iframe') #跳转到iframe框架 driver.switch_to.frame('x-URS-iframe') #同上面语句一样,跳转到iframe框架 username=driver.find_element_by_name('email') username.clear() username.send_keys('Jennifer···') time.sleep(0.1) userpasswd=driver.find_element_by_name('password') userpasswd.clear() userpasswd.send_keys('·····') time.sleep(0.1) loginbt=driver.find_element_by_id('dologin') loginbt.click() time.sleep(3) try: assert '网易邮箱' in driver.title except AssertionError: print '邮箱登录失败' else: print '邮箱登录成功' finally: #操作:收信,写信等操作,暂不写例子了 driver.quit() print '测试结束' 二,模块化驱动测试1.概念: 将重复的操作独立成功共模块,当用例执行过程中需要用到这一模块操作时则被调用。 操作+(重复操作,数据)混合在一起。 2.优点: 由于最大限度消除了重复,从而提高了开发效率和提高测试用例的可维护性。 3.缺点: 虽然模块化的步骤相同,但是测试数据不同。比如说重复的登录模块,如果登录用户不同,依旧要重复编写登录脚本。 4.实例 公共模块:对登陆和退出进行模块化封装 以下的用户名密码到时候自己去申请,就不将笔者的用户密码贴出来了。 # coding=utf-8 ''' Created on 2016-7-27 @author: Jennifer Project:模块化驱动测试实例,将重复的登录脚本放在单独的脚本中供其他用例调用 ''' import time class Login(): def user_login(self,driver): username=driver.find_element_by_name('email') username.clear() username.send_keys('username') time.sleep(0.1) userpasswd=driver.find_element_by_name('password') userpasswd.clear() userpasswd.send_keys('password') time.sleep(0.1) loginbt=driver.find_element_by_id('dologin') loginbt.click() time.sleep(3) def user_logout(self,driver): driver.find_element_by_link_text(u'退出').click() driver.quit()写信用例:以下代码用了各种定位方法,值得学习,后续再重新对这部分进行总结 直接调用模块的登录和退出方法。 收信用例: 直接调用模块的登录和退出方法。 # coding=utf-8 ''' Created on 2016-7-27 @author: Jennifer Project:接收邮件 ''' from selenium import webdriver import time from test_5_2_public import Login driver=webdriver.Firefox() driver.implicitly_wait(30) driver.get(r'http://www.126.com/') #字符串加r,防止转义。 time.sleep(3) driver.switch_to.frame('x-URS-iframe') #调用登录模块 Login().user_login(driver) time.sleep(10) #接收邮件 #点击收信 #以下定位是查找span标签有个文本(text)包含(contains)'收 信' 的元素,该定位方法重要 driver.find_element_by_xpath("//span[contains(text(),'收 信')]").click() #校验是否进入收件箱,没报错即进入 try: #点击其中一封邮件 driver.find_element_by_xpath("//div[@sign='letter']").click() except Exception as e: print e else: print '成功收信' #调用退出模块 Login().user_logout(driver) 三,数据驱动测试1.概念: 它将测试中的测试数据和操作分离,数据存放在另外一个文件中单独维护。 通过数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。 操作+重复操作+数据分开。 2.优点: 通过这种方式,将数据和重复操作分开,可以快速增加相似测试,完成不同数据情况下的测试。 3.缺点 暂无 4.实例 从excel表格读取用户名密码,登录邮箱。 以下的用户名密码到时候自己去申请,就不将笔者的用户密码贴出来了。 1.概念: 通过关键字的改变从而驱动自动化测试的执行,最终引起测试结果的改变。关键字驱动工具有:RobotFramework(RIDE)。 2.优点 视频里有讲解 自动化测试【Requests接口自动化测试实战】 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |