自动化测试框架思路

    技术2022-07-02  69

    http://www.51testing.com/?uid-128701-action-viewspace-itemid-215287 

    自动化测试 的优点 51Testing软件测试网A4EG0am:UAv

       提高测试效率和降低测试成本51Testing软件测试网#d l%|ehu,N(Dxp

    }k*m,s|&@mK-A344090    实现快速的回归测试,加快测试进度从而加快产品发布进度51Testing软件测试网5H6lh@�|'x?C-|

    51Testing软件测试网I P-u,pB+i8W

       更多的测试,提高测试覆盖率51Testing软件测试网s&{7~R6M d

    ;~)p+]2@I344090    保证一致性

    &R.zPrcQ`344090

    S9E0vc%p9{c344090    提高测试的可靠性,避免人为因素

    .@7VC}YN.eZ;@344090

    2P:M#gYTD4z T344090   1.2.        为什么要做自动化测试框架 51Testing软件测试网#?s)L5KS"q)V5P;C

    51Testing软件测试网z yw#~6R[G)B5E8X)j

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

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

    7c~,i@U|;W/J344090 51Testing软件测试网xK_'wv9}

      1.3.        希望达成的目标 51Testing软件测试网(n`I5le

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

    #`4ZLh3_YL$iVb4Cu3@344090 51Testing软件测试网"j)g`B"I/$O|

       高复用性

    v:p*d/@2r1o-q344090 51Testing软件测试网-j&N8R8Q:vKa9CuI

       高可维护性

    9bY:| r.rB4g344090

    1r U{5n"{r5qMp344090    稳定性51Testing软件测试网u%]/vXw2W A

    #bvq NonP!LW344090    快速编写脚本51Testing软件测试网 b q3o x0E%~t*?

    0F&UKy�x)~a)A Xu344090    自动执行

    3m_-OKkx QH344090

    !_8D P8G ]EYo5A5v344090    正确输出结果51Testing软件测试网K N}r:Ud

    &/M'Qd5Zh Y344090    能够不断提升自动化测试比例51Testing软件测试网Jn]n1e4sm

    51Testing软件测试网O,{u�J:Gh1b

      1.4.        实现思路

    [_iI4s344090

    w&vo%PZ(C4`x344090    分层设计:业务流程、功能点、操作组件51Testing软件测试网G8z*d6b)XGo

    51Testing软件测试网c5w$DoAR

      我们在进行测试时,首先会验证各个页面、各个字段的正确性,到验证功能点的正确性,再组合各个功能点进行业务逻辑、业务流程的验证,最终确保系统满足业务需求。51Testing软件测试网}#{8m,W�|

    0~K3RG1{!w(Lq"I+ck344090    * 对于自动化脚本,采用分层的思想,先实现最底层的操作组件,通过调用操作组件、及业务逻辑实现对功能点的验证,再通过调用业务逻辑组合功能点实现对业务流 程的验证。不同的业务流程,对于底层的操作组件、中间层的功能点函数是完全可以复用的,只是调用的业务逻辑的差异,或者是测试数据的差异性。51Testing软件测试网%O'yfBYR)e

    51Testing软件测试网D#e S wjgq!_{ W

       尽可能做到各脚本之间具备独立性,不相互依赖,便于进行各种基本场景的组合运行。51Testing软件测试网'/ ` S bB

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

    6n*nmZF/(K;]5mc344090

    J#ao9v4C!`|d6{344090   再看业务流程,新增一个小订单后可以作废,也可以由小订转认购,业务流程就有两个:新增小订单—作废订单,新增小订单—转认购,这两个业务流程中“新增小订单”这个功能点是一致的,可以通过调用不同的用例数据组合成不同的业务流程。51Testing软件测试网/lG {Z+Fk-ftl

    51Testing软件测试网;C"Nk'Mk]{n

      ● 脚本分离设计:对象、操作、测试数据、业务逻辑相互剥离、灵活调用51Testing软件测试网(^-|.v(v$g

    51Testing软件测试网n8B�gsHyu"[$a S9a

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

    eV/{�C8DD5S3L344090 51Testing软件测试网.B6t_Bt*q.y6Z

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

    m-qhv;ahJ(l344090 51Testing软件测试网&/7V+K.W�x Hz

       对象资源库51Testing软件测试网 fNls_9Ac3Oa;S(D

    +wxSY/? w9@344090    测试数据资源库51Testing软件测试网6t3f}'TAB

    Y&wKX.a+C6^s344090    操作组件(描述操作步骤)51Testing软件测试网NL?AN$}k~

    U J$GXk344090    脚本:业务逻辑

    q:_ d.M!~y d344090 51Testing软件测试网v o$^Uo2n'^ Z

      分离后,如果要增加测试用例,只需要维护测试数据,如果程序修改,增加了对象,那么只需要维护对象库、操作组件,增加对这个对象的操作。51Testing软件测试网9zB8u.qK,eW pD

    i;]1]"{_!u344090    封装基础函数、基本的业务逻辑、验证点

    jOCk2CG1Eh5H344090 51Testing软件测试网4P M]$El3Md

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

    Op4L!^/Lg3_�X.t/344090

    :f5L@gM tE?344090   如一个数据保存的功能,每一条数据在做了增、删、改的操作后,都需要验证保存至后台数据库 的数据正确性,通过预期结果与数据库实际产生的数据集进行比较验证,在获取数据库实际产生的数据集的方式是通用的,只是不同的功能所要验证的数据表、字段及Where条件不一致,获取数据集的方式就可以封装成一个基础函数,传入不同的SQL 语句做为参数即可。同时预期结果与实际结果集的比较也可以封装为基础函数。51Testing软件测试网l c~ z!?+^o&s+`

    51Testing软件测试网:WFcD)G Mrz4Z

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

    5f@(j7Qbv k*L344090

    fI1c+Vzn"R3si344090    有效的执行体系

    ;B}dxf] w)N344090 51Testing软件测试网3kL ZY�J t a

       批量、定制执行、自动运行51Testing软件测试网S Xin|)`f

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

    (V)MP hI M ^344090 51Testing软件测试网 vw-Vae v

       异常处理机制

    *F$@ s-Xmm344090

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

    C0q3l"Y*?^�i{0N344090

    3rr R$ELw*C;e344090   *业务数据还原初始状态51Testing软件测试网:aZ2YAk3S3V

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

    f)Q&w/YNEj344090 51Testing软件测试网(gi;]:yD+|

       版本管理

    Rh,f7sLC;cqM'E344090 51Testing软件测试网4FX$b D/`pG

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

    |s,C`#PG#iL|%Q:]344090 51Testing软件测试网+k,t!cx6l[/Q.w f

      结果体系

    w0W#s#^5Zc344090

    :z:|7p'Wm AP2K&rg [e344090   针以每条用例,输出用例执行结果

    v%lBWlH344090

    9h4F/H/#Gcl344090   针对每个检查点,输出详细的检查点执行结果

    [t4x MA�p x*[1gw344090

    #JF?f'|344090   输出执行日志

    z,Y0Br/P4Z k1Hk344090

    $/hU&FY344090   结构化管理

    '^ MW.h4_344090 51Testing软件测试网/hj"B(O&E

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

     

    QTP自动化测试Google地图 (fishy , 2010-5-31) 结合案例说明如何解决难以重现的Bug (fishy , 2010-5-31) 基于数据驱动的软件自动化测试框架 (fishy , 2010-6-01) 对游戏服务端程序进行自动化测试 (fishy , 2010-6-02) Selenium实例:AJAX自动化测试应用 (fishy , 2010-6-03) 自动化测试脚本自动生成技术的研究 (fishy , 2010-6-03) 走进单元测试(3):消灭HttpContext的依赖,兼谈单元测试的设计辅助性 (fishy , 2010-6-04) 如何做一个能害死人的自动化测试工具 (Dracular , 2010-6-04) Automation Testing Framework (allenzgw , 2010-6-08) 一个项目的自动化测试实践 (fishy , 2010-6-09)

    最新回复(0)