`
bubill
  • 浏览: 5576 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

自动化测试框架思路

阅读更多
 1.1.        自动化测试的优点

  ● 提高测试效率和降低测试成本

  ● 实现快速的回归测试,加快测试进度从而加快产品发布进度

  ● 更多的测试,提高测试覆盖率

  ● 保证一致性

  ● 提高测试的可靠性,避免人为因素

  1.2.        为什么要做自动化测试框架

  通过以往的尝试,发现真正实现自动化测试,并不是掌握了某个自动化测试工具,掌握了脚本的编写技术就能够达成,面对复杂的ERP系统,简单的录制/回放并不能达到自动化测试的要求,完全通过编写脚本的方式,工作量巨大且可维护性极差、不能复用。实现自动化就是为了能够提升测试效率,不具备可维护性、复用性差将成为导致自动化测试失败的最致命因素,付出巨大代价但起到的效果甚微。

  基于以上因素并结合行业发展思路,在正式实施自动化之前,必须搭建一套适合的自动化测试框架,将脚本能够有效的组织、连贯应用起来,提高测试脚本的可维护性和可读性。

  1.3.        希望达成的目标

  搭建符合以下要求的自动化测试框架,使得未来自动化测试正式实施时能够有序、高效的开展:

  ● 高复用性

  ● 高可维护性

  ● 稳定性

  ● 快速编写脚本

  ● 自动执行

  ● 正确输出结果

  ● 能够不断提升自动化测试比例

  1.4.        实现思路

  ● 分层设计:业务流程、功能点、操作组件

  我们在进行测试时,首先会验证各个页面、各个字段的正确性,到验证功能点的正确性,再组合各个功能点进行业务逻辑、业务流程的验证,最终确保系统满足业务需求。

  * 对于自动化脚本,采用分层的思想,先实现最底层的操作组件,通过调用操作组件、及业务逻辑实现对功能点的验证,再通过调用业务逻辑组合功能点实现对业务流程的验证。不同的业务流程,对于底层的操作组件、中间层的功能点函数是完全可以复用的,只是调用的业务逻辑的差异,或者是测试数据的差异性。

  * 尽可能做到各脚本之间具备独立性,不相互依赖,便于进行各种基本场景的组合运行。

  如销售系统中的选择房间操作,在做预约、小订、认购等操作时,都需要用到选择房产,因此可以将选择房产做为一个公共的操作组件,详细描述选择房产的操作步骤,在测试新增预约、新增小订、新增认购等功能点时都需要调用到选择房产的操作组件,只是业务的校验逻辑与所选择的数据不一致。

  再看业务流程,新增一个小订单后可以作废,也可以由小订转认购,业务流程就有两个:新增小订单—作废订单,新增小订单—转认购,这两个业务流程中“新增小订单”这个功能点是一致的,可以通过调用不同的用例数据组合成不同的业务流程。

● 脚本分离设计:对象、操作、测试数据、业务逻辑相互剥离、灵活调用

  对某个功能进行自动化测试,实际上就是对这个功能涉及的对象进行操作,输入测试数据来验证其结果的正确性,复杂的验证点需要编写业务逻辑。如果全部用脚本的方式编写,针对每一条测试数据就需要编写一份脚本,脚本量相当巨大,同时任何改动(程序、测试用例、GUI对象)都需要调整大量的脚本。

  为了达到可维护性、可复用性,将对象、操作、测试数据、业务逻辑剥离、分开管理,通过调用关系去组合实现不同的测试用例。

  * 对象资源库

  * 测试数据资源库

  * 操作组件(描述操作步骤)

  * 脚本:业务逻辑

  分离后,如果要增加测试用例,只需要维护测试数据,如果程序修改,增加了对象,那么只需要维护对象库、操作组件,增加对这个对象的操作。

  ● 封装基础函数、基本的业务逻辑、验证点

  通过对基本业务逻辑、验证点的封装、调用,实现快速的脚本开发

  如一个数据保存的功能,每一条数据在做了增、删、改的操作后,都需要验证保存至后台数据库的数据正确性,通过预期结果与数据库实际产生的数据集进行比较验证,在获取数据库实际产生的数据集的方式是通用的,只是不同的功能所要验证的数据表、字段及Where条件不一致,获取数据集的方式就可以封装成一个基础函数,传入不同的SQL语句做为参数即可。同时预期结果与实际结果集的比较也可以封装为基础函数。

  再如,系统页面中在某些操作或条件下,部分字段是只读不允许编辑的,或者是隐藏不显示的,编写脚本时需要对每一个对象写一条语句验证其只读和隐藏属性的正确性,如果将只读和隐藏属性的验证进行封装,针对每一个页面进行验证,那么只需要传入这个页面只读或隐藏的对象名称,调用封装的函数执行验证。可以大大减少脚本量,也更易于维护。

  ● 有效的执行体系

  * 批量、定制执行、自动运行

  自动化测试真正达到提升测试效率,需要实现无人值守情况下的批量自动执行,并且可以定制执行。

  * 异常处理机制

  脚本执行过程中,因程序错误或环境问题、脚本自身问题经常会出现非预期的错误:如意料外的弹出窗口、发现错误的数据、未找到对象、输入文件打不开或不能读等,有些情况下当前用例出错,并不影响后续用例的执行,需要支持异常处理机制,终止执行或者终止当前用例,继续后续用例的执行,亦或者跳过当前步骤,继续执行后续操作,并输出当前的错误报告。

  * 业务数据还原初始状态

  自动化测试需要循环执行,执行完成后,需要恢复初始状态(主要是业务数据),以使得程序重新提交版本后能够循环执行,不断的对新版本进行回归验证。

  * 版本管理

  随着待验证版本的不一致,自动化测试脚本也会不断的更新、维护,同样需要进行版本管理。

  ● 结果体系

  * 针以每条用例,输出用例执行结果

  * 针对每个检查点,输出详细的检查点执行结果

  * 输出执行日志

  ● 结构化管理

  对象、操作组件、基础函数、测试数据、功能点脚本、业务流程组合,如此多的层级、调用关系,必须进行结构化管理,采用高度组织化的目录结构、分级管理,方便进行正确及快速的调用,方便能够快速定位、查找问题。

(以上言论仅代表作者的个人观点,不代表51Testing观点)

版权声明:本文出自liqf的51Testing软件测试博客:http://www.51testing.com/?4340

原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

分享到:
评论

相关推荐

    自动化测试框架的思路

    通过以往的尝试,发现真正实现自动化测试,并不是掌握了某个自动化测试工具,掌握了脚本的编写技术就能够达成,面对复杂的ERP系统,简单的 录制/回放并不能达到自动化测试的要求,完全通过编写脚本的方式,工作量...

    软件测试之自动化测试框架.doc

    随着科技的不断发展,越来越多的产品开始实施自动化测试,自动化测试也是未来发展的一个趋势,面对这种趋势,我们应该怎么来实施自动化测试呢 ,如何来选择自动化测试框架呢,下面我就来谈谈自动化测试框架 ...

    接口自动化测试方案.docx

    随着科技的不断发展,越来越多的产品开始实施自动化测试,自动化测试也是未来发展的一个趋势,面对这种趋势,我们应该怎么来实施自动化测试呢 ,如何来选择自动化测试框架呢,下面我就来谈谈自动化测试框架 ...

    Jmeter自动化测试框架简介(不含代码).pptx

    可以分享交流下接口自动化框架思路

    web自动化测试视屏

    同时,开始学习自动化测试框架,能够根据产品的实际情况来编写合适的测试框架。  以上,我认为大体就是学习web自动化测试的一个思路。都是个人观点,而且由于时间原因,写的不是很详细,还请大家见谅。

    web自动化测试框架文档

    文档主要有以下4大部分的内容: 1:自动化测试的关键思路介绍 2:自动化测试编码基础的介绍 3:框架的介绍 4:对于以上内容的总结 等等 本文档对于web应用如何开展自动化测试会有很好的指导作用。

    robotframework+python实现http接口自动化测试框架

    所以,对于即将开始的http接口测试需求,立马花了两天时间搭建了一个http接口自动化测试框架用于测试后期回归测试,实在是被大量的重复手工执行搞怕了。最方便的方法就是用python直接写代码,代码和测试数据分离,...

    ATE Studio

    C#版的自动化测试平台,参考HW测试与装备部的ATE V3平台,用了10余年平台,离职后还挺怀念,随用C#模仿开发了一个类似的框架。大概思路是界面框架只负责显示,调用dll,保存记录。用户只需开发测试dll即可,一个测试...

    软件测试-ui自动化-PO设计思路-学习研究

    值得注意的是,这种分层的设计模式,最好也是从线性代码开始,逐步将代码进行升级,最后形成以POM设计思路为核心的自动化测试框架。 代码升级思路如下:V1(不使用任何设计模式和单元测试框架)-V2(使用 PyTest管理...

    自动化测试框架:设计的重构

    原先的框架系统,思路是将自动化代码,通过调用控件的  最近对测试框架进行了重构,也对其中原有的一些设计进行了反思。其中不免有一些自我感觉得意之处,因此写出来和大家分享。这是一个重构的过程,所以将以重构...

    python接口自动化实战(框架)

    各个文件夹下的文件如下:我这个自动化框架要实现什么1.从excel里面提取测试用例2.测试报告的输出,并且测试报告得包括执行的测试用例的数量、成功的数量、失败的数量以及哪条成功了,失败的是哪一个,失败的原因是...

    Python接口自动化实战思路.pdf

    二、基于Page object模式,用的是unittest框架,思路如下: 1、config 目录(比方说数据库配置、项目路径、测试报告和邮箱配置) 2、Data:测试数据。后期准备把代码中会所有测试数据都整合到excel或者xml 内,Data...

    客户端GUI测试技术和自动化测试架构设计简谈

    它的自动化特点是:复杂成本高不容易发现问题技术要求高架构很难通用下面,从一些基本的东西开始一点点的讨论客户端GUI测试的一些问题和处理办法,以及自动化架构设计的一些思路。事实上就像上面说的,GUI的测试并...

    针对私有协议的模糊测试技术研究

    以改进,提出一个基于自动化的网络协议模糊测试框架;同时,针对私有网络协议,特别是经过 编码的私有网络协议模糊测试提出有效的测试思路,以减少在协议解析过程中,对加密例程进 行逆向工程的艰难过程,提高漏洞...

    Android自动化测试—操作对话框(Dialog)上面的控件

    Robotium框架提供了获取、操作控件的API,如下图:  Robotium框架提供了获取、操作控件的API,如下图:  对于有id或者String的控件可以通过Robotium直接找到,但是对于弹出的Dialog上面的控件单纯的利用Robotium...

    Android利用Espresso进行UI自动化测试的方法详解

    为什么需要UI自动化测试? 我有一个观点,对于重复的工作,那么程序都是可以代替的,我想这是作为一个程序员的一个基本素养(能偷懒的绝不干活)。UI自动化测试就是为了应付一些重复的工作,比如说测试某个功能,...

    python自动化测试三部曲之request+django实现接口测试

    主要是介绍unittest框架,有兴趣的同学们可以移步去查阅这里废话少说,进入正题我的思路是这样的1、先用django实现登陆、增加、删除、查看4个接口2、在excel定义好测试案例、然后读取excel中的案例,然后把案例用...

    AutoTest-master.zip

    详细搭建自动化测试的教程,主要实现了自动化测试的框架搭建,给你一个全新的编写自动化测试思路,该资源可以帮助你快速学习,节省大量时间。

Global site tag (gtag.js) - Google Analytics