软件测试技术之手工测试人员的测试自动化
我这里可以肯定的说,没有好的编程功底,你也不可能涉及出非常好的testcase,自动化的 开发 也不应该是仅仅把手工操作用脚本来模拟,而是应该大幅度的改变testcase,使得能够用最好的方式来进行自动化。那些 手工测试 人员所谓的设计case的重要性,和他们设计c
我这里可以肯定的说,没有好的编程功底,你也不可能涉及出非常好的test case, 自动化的
开发也不应该是仅仅把手工操作用脚本来模拟,而是应该大幅度的改变test case,使得能够用最好的方式来进行自动化。那些
手工测试人员所谓的设计case的重要性,和他们设计case的高水平,实际上只是在他们的
知识范围之内产生的观点。下边我用一个小例子来说明,编程能力在自动化过程中起的作用到底有多大。基本上来讲,有多强的开发水平,就有多强的自动化设计,实现水平。自动化开发和产品的开发实际上都是一样的,都是有
需求,你来实现。当然,不同水平的人,实现起来的效果是千差万别的。这也就是为什么开发有高手,有低手,
自动化测试的开发也同样有低手,有高手。自动化测试水平没有上限,你要学会发挥自己的无穷潜力。
不多说了,现在说一下我们要自动化什么问题。我们有两个计算机帐号,A和B。我们需要用B帐号进行系统的设置,也就是测试的准备工作,然后用A帐号来进行测试。下边来说一下不同水平的人是如何进行自动化的。
1. 手工
测试人员 Log on B
Configure
Log out
Log on A
Test
2. 初级自动化人员(直接把手工case转成自动化)
Set autologon B
Set autorun
Record test status: 0
Logout
Check status
if(status==0)
{
Configure
Set autologon A
Record test status:1
Logout
}
if(status==1)
{
Test
}
这个级别的人,需要懂得脚本编程,需要懂得系统设置,autologon and autorun。
3. 有一定经验的自动化人员(改变手工测试case以利于自动化的更简单,可靠的实现)
不需要log out and log on
利用
Windows命令Runas
用高级语言调用Runas
利用重定向来输入Password
这个级别的人,需要懂得高级语言,重定向,
Windows系统命令Runas
4. 中级自动化人员(具有更丰富的开发经验,可以用程序代替UI和系统命令)
不需要Runas命令
利用.NET的Process对象
用B的身份生成一个Process来进行配置工作
这个级别的人,要比较熟悉高级语言,比较熟悉高级语言的类库,懂得操作系统的内核基本概念
5. 高级自动化人员(精通高级语言,精通操作系统内核)
不需要多生成一个进程
用本线程impersonate用户B
利用.NET WindowsIdentity 对象
必须要调用Windows API,LogonUser
这个级别的人,要精通C/C++和
Java,C#等高级语言,精通Windows内核的知识和Windows API
从以上的例子可以看到,针对同一个test case,不同的测试人员,从手工到高级自动化,由于自己知识面的原因,会设计出非常不同的case出来。越高级的自动化越灵活,稳定,可靠,也更需要掌握更多的开发和内核的知识。因此,我们看到很多人在强烈的否定自动化,你先看看他到底在哪个层次中。越下边层次的自动化人员,由于技术的原因,碰到的问题会越多,能解决的问题却越少,因此对自动化的抱怨也就越大了。这些都是可以理解的,不过以此来否定自动化,我觉得还是不太应该,毕竟自己技术还不过关。
原文转自:http://www.ltesting.net