(3)UI测试:selenium webdriver( web )、appium(app)
常见自动化测试工具
(1)接口测试:Jmeter、soapui、postman
(2)UI测试:katalon、Robotframework、Android
自动化测试脚本技术
1、线性脚本:录制、回放
2、结构化脚本:含有控制脚本执行的指令,支持顺序、选择和循环3、共享脚本:可以被多个测试用例使用,脚本之间可以互相调用
3、数据驱动脚本:数据驱动脚本是将测试输入存储在独立的文件中,脚本中只存放控制信息
4、关键字驱动脚本:关键字驱动脚本实际上是较重复的数据驱动技术的逻辑扩展 ,即测试用例的执行步骤(操作,操作对象,操作值)存放在文件中,直接执行
自动化测试操作的基本原理
1、接口自动化测试操作
(1)模拟请求 url和报文,准备测试数据,抓包获取接口信息,对接口的一个分析,有文档或无文档
(2)模拟客户端发送 HTTP请求(get、post)
(3)模拟客户端从服务器接收返回报文
(4)验证返回结果是否符合预期
2、UI自动化测试的操作
(1)通过id、name、xpath、cssSelector等方法定位页面元素(findelement、findelements)
(2)对定位到的页面元素执行相应的操作( click、input等)
(3)对操作后出现的结果和预期结果做一个比较( assert )
自动化测试基础工具原理
Selenium(解析前端代码与控制浏览器)
自动化测试的PO模式
1、在PO模式中抽象封装成一个BasePage类,该基类拥有一个只实现webdriver实例的属性
2、每一个page都继承BasePage,通过driver来管理本page中元素,将page中的操作封装成一个个的方法TestCase依赖page类,实现相应的测试步骤
自动化测试框架
1、关键字驱动
(1)将测试用例分成四个不同的部分。首先是测试步骤(Test Step),二是测试步骤中的对象(Test Object),三是测试对象执行的动作(Action)新点软件测试面试,四是测试对象需要的数据(Test Data)。
(2)将数据与关键字结合来描述如何执行测试。也就是将测试用例脚本中的步骤提取出来,放在独立的数据文件中,变成简单编写的方式。这种方法具备数据驱动的优势,同时非编程人员也能建立测试。
(3)关键字驱动的模式是建立在数据驱动手段之上,关键字驱动文件包含指令 (关键词),而不只是数据。
(4)这个测试框架可以通过很少的代码来产生大量的测试用例。同样的代码在用数据表来产生各个测试用例的同时被复用。
2、数据驱动
(1)从某个数据文件(例如Excel文件、Xml文件、Json文件、数据库等)中读取输入测试数据,然后通过变量传入编写的测试脚本中。
(2)数据文件的读取、测试状态和所有测试步骤都被编写进测试脚本里;测试数据只包含在数据文件中,而不是脚本里,测试脚本只是一个“驱动”,或者说是一个传送数据的机制。
(3)数据驱动的方法主要用于需要通过不同数据来保证测试覆盖率的场景,比如被测系统业务逻辑固定不变或变动较小,即测试用例步骤是固定的,但是所需要的测试数据是变化的情况,通常来说,数据都是保存在外面文件或数据库中,运行时自动获取。即测试框架中要支持数,据与脚本分离,一个测试脚本可以驱动执行多个相似测试场景。
(4)这个框架意图减少需要执行所有测试用例所需要的总的测试脚本数,数据驱动需要很少的代码来产生大量的测试用例。
三、自动化测试框架的选择与搭建
1、技术方案
Selenium(Webdriver)+ Python(unittest)+ cx_Oracle + HTMLTestRunner
Selenium的WebDriver是一款开源工具。利用比较简洁的Python语言进行自动化测试,对于人员的学习成本来讲比较实用,学习时间短,有优势。
Python自带的unittest单元测试框架可以很方便的实现自动化用例的设计和执行以及自动化用例套件的管理等任务。Python是纯面向对象的语言,后续也可以过渡到Java + Selenium进行更加丰富的自动化测试;此外,可以选择Jenkins作为持续集成服务器,配合Python+Selenium的方案进行自动化冒烟测试。
此方案采用了Page Object设计模式,将页面、用例、数据三者分离。这样可以使测试案例可以更关注与业务而非界面细节,提高测试案例的可读性;降低代码冗余,增加方法的复用性。
2、环境选择
根据测试组自动化测试需求讨论结果,在uat、stage环境下使用自动化测试技术做回归测试。(执行前需确保该环境可正常使用)
由于uat、stage环境频繁发版,影响自动化测试框架调试及脚本编写,申请一个稳定环境做调试及编写工作。
3、自动化测试流程
(1)选取模块
(2)选择用例(主流程用例)
(3)按页面编写操作方法
(4)按用例编写用例流程脚本
(5)按用例编写数据查询方法
(6)执行用例
(7)输出报告(后期扩展,增加执行日志和异常截图以便跟踪缺陷)。
综上,当脚本内容编写结束并且业务需求和测试需求均无更改的时候,执行后两步操作即可。查看报告内容,如发现缺陷,需按用例内容重现缺陷并提交至禅道管理系统。
4、后续维护
(1)业务需求变更
当业务需求变更时,应在执行用例时越过变更内容用例,变更内容上线后按需求变更内容对脚本及用例进行相应调整。调整结束,需再次执行确保用例稳定。
(2)被测模块重构
当被测模块重构完成时,需执行该模块自动化测试用例,查看是否正常执行,若无问题出现则不需调整,若出现问题需及时调试解决。
(3)技术变更
随着自动化测试框架的不断调优、扩展功能,基础模块和封装的页面等也会随之变化。进而,自动化测试需要定期执行,以保证调优、扩展后框架的稳定性,从而达到保障回归测试的正常进行。
5、资源调配
(1)环境:
a、项目环境与线上项目近似,独立发版新点软件测试面试,版本内容相对稳定,数据库独立,不受其它环境影响。
b、本机环境,win7&win10 Chrome 72 32bit。
(2)用户:独立用户,权限尽量调高,以免由用户权限影响访问某些功能点,减少用例遗漏。
(3)人员:建立自动化测试的组,理想状态下3-4个人员,测试开发、中高级自动化测试工程师、初级自动化工程师。
(4)培训:对初级自动化工程师培训,设计的框架以及封装的驱动等。
四、自动化测试分阶段实现
1、搭建基础版框架,完成一个模块的自动化测试demo
采用Page Object设计模式,对页面元素,用例流程,数据进行封装隔离,在通用模块或基础模块中对webdriver进行二次封装,自动生成测试报告以便分析自动化测试执行结果。
2、按基础版框架,扩展测试范围
选取适合做自动化测试的功能模块,按基础框架思路编写脚本、用例等,然后对框架做扩展,实现数据驱动、定时执行测试,发送报告邮件等便于使用的非核心功能。
3、覆盖大多数模块的回归测试
根据人员等资源的协调情况,将自动化测试用例扩展至覆盖大部分模块回归测试的程度。由执行自动化测试完成回归测试,以达到提高回归测试的效率,降低回归测试人力要求的目的。
小结
自动化测试技术在现代测试技术中是有一定优势的,但是自动化测试不是在任何情况下都必须的,适当的、或者是有效成本投入,需要我们在合适的时机引入自动化测试,使手工测试和自动化测试实现完美结合。
END绵薄之力
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
加入我的软件测试交流群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)
软件测试面试小程序
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
涵盖以下这些面试题板块:
1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库,5、linux
6、web,app,接口自动化 ,7、性能测试,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础
获取方式 :
版权声明
本文仅代表作者观点。
本文系作者授权发表,未经许可,不得转载。
发表评论