1.1. 自动化测试的优点51Testing软件测试网xVx*D2ZL1n$qN+} ● 提高测试效率和降低测试成本
~w @jP!GQ(HP!ha A
xY051Testing软件测试网 ^w n%d\1q
~R5K4U+y ● 实现快速的回归测试,加快测试进度从而加快产品发布进度
'^
yy/Z:@1\9a051Testing软件测试网)he!L+W C ● 更多的测试,提高测试覆盖率51Testing软件测试网,NS'NsK
b
+k7a~Kmi(]#G$?0 ● 保证一致性
q ZpO*k(K{"C!g%U00]$VpJ Tzm'w0 ● 提高测试的可靠性,避免人为因素
B0]Z]$t0Ww\Td-XAK0 1.2. 为什么要做自动化测试框架51Testing软件测试网-gED
Y'O+_b7M
]sI9Hl?0 通过以往的尝试,发现真正实现自动化测试,并不是掌握了某个自动化测试工具,掌握了脚本的编写技术就能够达成,面对复杂的ERP系统,简单的录制/回放并不能达到自动化测试的要求,完全通过编写脚本的方式,工作量巨大且可维护性极差、不能复用。实现自动化就是为了能够提升测试效率,不具备可维护性、复用性差将成为导致自动化测试失败的最致命因素,付出巨大代价但起到的效果甚微。
Jc6X iC051Testing软件测试网1Mh;I7` {!vk 基于以上因素并结合行业发展思路,在正式实施自动化之前,必须搭建一套适合的自动化测试框架,将脚本能够有效的组织、连贯应用起来,提高测试脚本的可维护性和可读性。51Testing软件测试网m
x`m1^NsP$I
51Testing软件测试网X:uFG6z[Q4Q 1.3. 希望达成的目标
k,_%Y2h"^+_&kK1V0&[uVI `cO0 搭建符合以下要求的自动化测试框架,使得未来自动化测试正式实施时能够有序、高效的开展:
2~tLB:`N0/|4x/|n v9qH0 ● 高复用性
6_"m-bst ]hj0(r?8c{aN1p&b.P0 ● 高可维护性51Testing软件测试网oQ4H6o3P5Fv
51Testing软件测试网
]!N6rn yE ● 稳定性
&e?}[$~j.r)D#kq)Z051Testing软件测试网k-c Z$D^/|"T ● 快速编写脚本51Testing软件测试网Q
@p,Tb
L5J J
4rdU ?2_`0 ● 自动执行
3Nnk.S.I3d;X/t051Testing软件测试网y0j&D
V9bD ● 正确输出结果51Testing软件测试网|)E WE6m,W2T
1Q3m!P&IE%LH0 ● 能够不断提升自动化测试比例51Testing软件测试网2Lp1K5XH
W1wb/^T&k'N
E?$K ^0ZG`/R0 1.4. 实现思路51Testing软件测试网$Ch;Yd5l(ds
mE,}gaF9`0 ● 分层设计:业务流程、功能点、操作组件51Testing软件测试网WI
I7bF `
51Testing软件测试网!DG,GLo4DU6[ 我们在进行测试时,首先会验证各个页面、各个字段的正确性,到验证功能点的正确性,再组合各个功能点进行业务逻辑、业务流程的验证,最终确保系统满足业务需求。
%r#D9a5bA9e2v0W00Y2iYK#T*\[0 * 对于自动化脚本,采用分层的思想,先实现最底层的操作组件,通过调用操作组件、及业务逻辑实现对功能点的验证,再通过调用业务逻辑组合功能点实现对业务流程的验证。不同的业务流程,对于底层的操作组件、中间层的功能点函数是完全可以复用的,只是调用的业务逻辑的差异,或者是测试数据的差异性。
f
wCE5B[0n9]
y+@9H0 * 尽可能做到各脚本之间具备独立性,不相互依赖,便于进行各种基本场景的组合运行。
?$R%^(sm9_051Testing软件测试网!D C$OB[Xe)q 如销售系统中的选择房间操作,在做预约、小订、认购等操作时,都需要用到选择房产,因此可以将选择房产做为一个公共的操作组件,详细描述选择房产的操作步骤,在测试新增预约、新增小订、新增认购等功能点时都需要调用到选择房产的操作组件,只是业务的校验逻辑与所选择的数据不一致。51Testing软件测试网nO/R5o"Lk3S4W5G
51Testing软件测试网7H A8t9v%T-p'k!s RV:U 再看业务流程,新增一个小订单后可以作废,也可以由小订转认购,业务流程就有两个:新增小订单—作废订单,新增小订单—转认购,这两个业务流程中“新增小订单”这个功能点是一致的,可以通过调用不同的用例数据组合成不同的业务流程。
HgV5}D.C051Testing软件测试网EpNH!Pp1F0\*V ● 脚本分离设计:对象、操作、测试数据、业务逻辑相互剥离、灵活调用
Z"U {&[bh051Testing软件测试网I:ug@,Qn3@"T N9f7k;E 对某个功能进行自动化测试,实际上就是对这个功能涉及的对象进行操作,输入测试数据来验证其结果的正确性,复杂的验证点需要编写业务逻辑。如果全部用脚本的方式编写,针对每一条测试数据就需要编写一份脚本,脚本量相当巨大,同时任何改动(程序、测试用例、GUI对象)都需要调整大量的脚本。
h;K
z"RxSs051Testing软件测试网8iEU4Arb3l9oh 为了达到可维护性、可复用性,将对象、操作、测试数据、业务逻辑剥离、分开管理,通过调用关系去组合实现不同的测试用例。51Testing软件测试网\&gC)]z*}4j.T8JQ o
51Testing软件测试网&E
A.iqp6KY}a * 对象资源库51Testing软件测试网N$BqE{9rR5Jq3ig3L
d3k%eSK0 * 测试数据资源库
(i/}M;|0xAy.V051Testing软件测试网*o9P6f6Y9i%Tv'I-q * 操作组件(描述操作步骤)51Testing软件测试网]zV@2wZ
D[GhULJ]0 * 脚本:业务逻辑51Testing软件测试网4p`,Y-vUy
MJ
B$b
51Testing软件测试网*E"d7~{s:GR%C0T?o,RB 分离后,如果要增加测试用例,只需要维护测试数据,如果程序修改,增加了对象,那么只需要维护对象库、操作组件,增加对这个对象的操作。
.a
U)i%Coz9JHCm0!C(JX{1hF0 ● 封装基础函数、基本的业务逻辑、验证点
8h!S#z:NI9S/r;O0@eQ8xxx0 通过对基本业务逻辑、验证点的封装、调用,实现快速的脚本开发51Testing软件测试网BC
E)t3Y5i
(~.?pMh5hEfoq8y0 如一个数据保存的功能,每一条数据在做了增、删、改的操作后,都需要验证保存至后台数据库的数据正确性,通过预期结果与数据库实际产生的数据集进行比较验证,在获取数据库实际产生的数据集的方式是通用的,只是不同的功能所要验证的数据表、字段及Where条件不一致,获取数据集的方式就可以封装成一个基础函数,传入不同的SQL语句做为参数即可。同时预期结果与实际结果集的比较也可以封装为基础函数。51Testing软件测试网m9@`,z:k!l6^.p.~'L
51Testing软件测试网/j-KA
lJU7v 再如,系统页面中在某些操作或条件下,部分字段是只读不允许编辑的,或者是隐藏不显示的,编写脚本时需要对每一个对象写一条语句验证其只读和隐藏属性的正确性,如果将只读和隐藏属性的验证进行封装,针对每一个页面进行验证,那么只需要传入这个页面只读或隐藏的对象名称,调用封装的函数执行验证。可以大大减少脚本量,也更易于维护。51Testing软件测试网t|1Y+P?`4@-PUl,Ab
51Testing软件测试网7d-JI'N/e}9Rxe ● 有效的执行体系
,k8A:W Ha051Testing软件测试网 CUYjpY0j2Z * 批量、定制执行、自动运行51Testing软件测试网wCbDN;i0G)a
51Testing软件测试网,Q2_f$iHLl3e kG 自动化测试真正达到提升测试效率,需要实现无人值守情况下的批量自动执行,并且可以定制执行。51Testing软件测试网?x\k*a0E0lg
yTV Uo5K0 * 异常处理机制
@ygi$vGr051Testing软件测试网AE+K,TdF)YmzE 脚本执行过程中,因程序错误或环境问题、脚本自身问题经常会出现非预期的错误:如意料外的弹出窗口、发现错误的数据、未找到对象、输入文件打不开或不能读等,有些情况下当前用例出错,并不影响后续用例的执行,需要支持异常处理机制,终止执行或者终止当前用例,继续后续用例的执行,亦或者跳过当前步骤,继续执行后续操作,并输出当前的错误报告。
^Y'm/i,e Odx;{$pc T051Testing软件测试网\F
z!T T;|
BZ * 业务数据还原初始状态51Testing软件测试网7?z:r1H+z7_
iNM
51Testing软件测试网+P]-\8EVFZ 自动化测试需要循环执行,执行完成后,需要恢复初始状态(主要是业务数据),以使得程序重新提交版本后能够循环执行,不断的对新版本进行回归验证。
R,BD
mllR1^9O051Testing软件测试网#cs9vf9T#|qT * 版本管理51Testing软件测试网8\Vrk4k
!w0@o a'RW'Z4jP8on0 随着待验证版本的不一致,自动化测试脚本也会不断的更新、维护,同样需要进行版本管理。
H*mf+W&Ax;AA[051Testing软件测试网Y"qG_'j&pd ● 结果体系
D
C@B6~+e0^;|5[+Y nY@ie0 * 针以每条用例,输出用例执行结果51Testing软件测试网,p]]SO;[(p)G
51Testing软件测试网[0Wc6p0wG * 针对每个检查点,输出详细的检查点执行结果
GI([${GytxK:Ny051Testing软件测试网Xv.zF%W']? * 输出执行日志
;[HR,N9sW v0DYY;i-\fi-o5S0 ● 结构化管理51Testing软件测试网r|fWO,h
~
51Testing软件测试网7E%C(h.S(PY 对象、操作组件、基础函数、测试数据、功能点脚本、业务流程组合,如此多的层级、调用关系,必须进行结构化管理,采用高度组织化的目录结构、分级管理,方便进行正确及快速的调用,方便能够快速定位、查找问题。
]9T}2bRfqp0