不同水平的人是如何进行自动化测试的
很多人理解的自动化就是把手工测试case用脚本和工具转变成自动化测试。也就是说把手工测试的每一个步骤用脚本来模拟,从而执行test case。那么自动化的所有问题就归结于,如何用工具和脚本来转化手工操作步骤了。还有很多非常senior的,但是不会coding的手工测试工程师强调case的design能力是如何如何重要,自动化相对来说不是那么重要。 \6 H3 u+ J. U
, I' C$ X. N; d' q
我这里可以肯定的说,没有好的编程功底,你也不可能涉及出非常好的test case, 自动化的开发也不应该是仅仅把手工操作用脚本来模拟,而是应该大幅度的改变test case,使得能够用最好的方式来进行自动化。那些手工测试人员所谓的设计case的重要性,和他们设计case的高水平,实际上只是在他们的知识范围之内产生的观点。下边我用一个小例子来说明,编程能力在自动化过程中起的作用到底有多大。基本上来讲,有多强的开发水平,就有多强的自动化设计,实现水平。自动化开发和产品的开发实际上都是一样的,都是有需求,你来实现。当然,不同水平的人,实现起来的效果是千差万别的。这也就是为什么开发有高手,有低手,自动化测试的开发也同样有低手,有高手。自动化测试水平没有上限,你要学会发挥自己的无穷潜力。 & \4 c! |5 J3 k: G0 U% D4 Q
不多说了,现在说一下我们要自动化什么问题。我们有两个计算机帐号,A和B。我们需要用B帐号进行系统的设置,也就是测试的准备工作,然后用A帐号来进行测试。下边来说一下不同水平的人是如何进行自动化的。
0 K" ?4 G8 Y4 }3 }3 w: j; g- }) R @) K- B2 T
1. 手工测试人员 7 p5 |( p" Z" i
, T: } l: {6 P$ J! ~# o+ a
Log on B : P! I- K% C: i* G
Configure $ u1 x% m( K/ O# \9 t
Log out . W' R& o; v, J4 H \( J
Log on A
* U: a& w S: l- H: Z, S( [Test
) P: f. q2 [% O2. 初级自动化人员(直接把手工case转成自动化)
4 J4 I/ i5 k8 K3 f0 ~2 t+ V; {" o' E2 l: ]8 x! I+ Q0 p, @9 M
Set autologon B
8 {6 B* [+ X# r) k) v9 qSet autorun $ Q, W# r" C6 t, R& h% e
Record test status: 0 % Z6 {# Q3 x0 o6 b: o( X
" j9 m# Z+ C5 V2 jLogout
6 W' D( x4 A: R/ W6 r `% zCheck status
t9 g f$ R& R$ i* J, J: g6 w. q) n$ Lif(status==0)
# h6 r+ g1 B7 Y# f9 Y{
, E3 t' H6 |; Y% |3 j7 dConfigure8 F$ d9 x% ]) Z% q! D9 \1 v1 u
Set autologon A4 F4 e; z$ B9 r4 i
Record test status:1! @- \' G" o8 I( S9 J
Logout
- Q. G4 [6 z) a( E; E" r; K} # Y- E" W3 e; t- j; s" I: k
' i3 }0 T3 A- ~$ F2 k; q1 Vif(status==1): u, R4 f9 `) w& b- K& a2 {' Q
{) n* h9 K) A- n
Test O$ b) K4 y; g' @) u) C7 U
} # K6 }5 b" y6 h3 M; X* z9 v
3 M z; u! P7 }# v这个级别的人,需要懂得脚本编程,需要懂得系统设置,autologon and autorun。 # b3 f$ p" ~9 k5 J a1 }2 _8 ^# s
, W5 j2 }- X8 \/ Y9 r4 a7 ?
3. 有一定经验的自动化人员(改变手工测试case以利于自动化的更简单,可靠的实现)
9 O5 a/ [8 y+ R, h9 }
2 ?1 t; _* Z+ I( f: H6 Z不需要log out and log on / K' ~8 t+ K' r
利用Windows命令Runas " [, F0 T! ^- a/ A; ^/ g( o+ s0 A
用高级语言调用Runas
3 t- B& u) S6 G: l4 K利用重定向来输入Password
; P3 X9 t7 @, D8 _8 f$ f+ Y这个级别的人,需要懂得高级语言,重定向,Windows系统命令Runas
S' I" Z! o* c6 D' O8 Y) i5 f
6 V7 q8 Y0 @/ W0 N4. 中级自动化人员(具有更丰富的开发经验,可以用程序代替UI和系统命令)
& Q9 n2 i5 F$ G$ v. h, [8 M/ D/ K l% N7 t
不需要Runas命令
# e& W. a* p- Y; L- c: U5 N利用.NET的Process对象 ' n. E8 |" F5 s# x
用B的身份生成一个Process来进行配置工作
) |) @ X# R- m8 _6 t这个级别的人,要比较熟悉高级语言,比较熟悉高级语言的类库,懂得操作系统的内核基本概念
( C+ r Z5 x! r% U3 A+ Z4 x2 R3 {* B: q( [! r- {8 j: S& r6 _
5. 高级自动化人员(精通高级语言,精通操作系统内核)
- b$ s5 X5 @" U# t9 s' n8 n2 q N8 [. f( j
不需要多生成一个进程 5 P5 h7 M5 s. u- I4 S9 v4 X+ r( X
用本线程impersonate用户B
2 Q+ V- x z; u5 p/ J N% i利用.NET WindowsIdentity 对象
& m& i: s: W2 ^7 S7 W* @4 Q必须要调用Windows API,LogonUser 3 k2 S% Q x$ T: a/ W
这个级别的人,要精通C/C++和Java,C#等高级语言,精通Windows内核的知识和Windows API 1 \' ?+ c3 W" p# K
2 ?/ O9 `) K/ L
从以上的例子可以看到,针对同一个test case,不同的测试人员,从手工到高级自动化,由于自己知识面的原因,会设计出非常不同的case出来。越高级的自动化越灵活,稳定,可靠,也更需要掌握更多的开发和内核的知识。因此,我们看到很多人在强烈的否定自动化,你先看看他到底在哪个层次中。越下边层次的自动化人员,由于技术的原因,碰到的问题会越多,能解决的问题却越少,因此对自动化的抱怨也就越大了。这些都是可以理解的,不过以此来否定自动化,我觉得还是不太应该,毕竟自己技术还不过关。 0 {/ P, u, { F0 L4 b# F
www.btestingsky.com欢迎讨论 北航校区咨询电话:010-62303260/3278 免费电话:400-650-2344 地址:北四环学院桥向南500米路东大唐电信院内北大测试楼;复兴门校区咨询电话010-66421965/1956 免费电话 400-610-7669,地址:北京西城区长椿街 佟麟阁路尚信大厦 3 层