51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8071|回复: 26
打印 上一主题 下一主题

[原创] 用一个小例子来说明手工测试,自动化测试,系统命令,编程语言,API的关系

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-8-15 10:02:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
很多人理解的自动化就是把手工测试case用脚本和工具转变成自动化测试。也就是说把手工测试的每一个步骤用脚本来模拟,从而执行test case。那么自动化的所有问题就归结于,如何用工具和脚本来转化手工操作步骤了。还有很多非常senior的,但是不会coding的手工测试工程师强调case的design能力是如何如何重要,自动化相对来说不是那么重要。我这里可以肯定的说,没有好的编程功底,你也不可能涉及出非常好的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出来。越高级的自动化越灵活,稳定,可靠,也更需要掌握更多的开发和内核的知识。因此,我们看到很多人在强烈的否定自动化,你先看看他到底在哪个层次中。越下边层次的自动化人员,由于技术的原因,碰到的问题会越多,能解决的问题却越少,因此对自动化的抱怨也就越大了。这些都是可以理解的,不过以此来否定自动化,我觉得还是不太应该,毕竟自己技术还不过关。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-8-15 10:12:43 | 只看该作者
抱怨也是有一定道理的:

比如International UI自动化测试受限于图像处理和神经网络的基础研究一直以来没取得太大突破。神经网络自从上世纪70年代以来就一直没突破性进步。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-8-15 11:16:50 | 只看该作者
对于一个UI操作,该用"鼠标键盘"来完成还是使用API等方式来完成.

取决于你的测试阶段,你的focus是什么.

一个很简单的例子, 一个登录框. 你可以通过输入键盘,点击鼠标来进行"登录"操作, 也可以直接构造一个http请求来让页面达到同样的结果.

我们知道, 目前市面成熟的商业功能测试工具,都是采用模拟键盘鼠标来进行操作, 而性能测试工具, 都是采用直接构造http请求的方式来进行.

一个问题, 什么时候,该进行直观的UI操作,什么时候,该使用更"底层"的方式来完成.
而不是说能用API就用API.

这个也是我和cleverman讨论过的问题...

我水平有限,期待大牛现身...sdlkfj3
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-8-15 11:59:50 | 只看该作者
原帖由 shanxi 于 2007-8-15 10:12 发表
抱怨也是有一定道理的:

比如International UI自动化测试受限于图像处理和神经网络的基础研究一直以来没取得太大突破。神经网络自从上世纪70年代以来就一直没突破性进步。


能不能详细的说说呢?我就是搞神经网络的,怎么看不懂?
international UI自动化指的是什么?为什么跟图像处理和神经网络有关系?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2007-8-15 12:01:44 | 只看该作者

回复 #3 backtochendu 的帖子

我现在没法跟你讨论了,你根本没明白我的意思。
我任何一篇文章都没有提到过用API代替鼠标键盘操作。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-8-15 12:30:14 | 只看该作者
@cleverman

我也没法和讨论了...

我希望听听别人的看法...
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-8-15 12:35:47 | 只看该作者
我也想看看那个神经网络是怎么回事。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-8-15 13:33:22 | 只看该作者
神经网络主要是希望自动化工具具有学习能力。
而图像处理,主要是因为做的过程中,如果出现Garbage String,当你用类似Spy++这样的工具去取时,会发现里面的String是正确的,但你看到的UI是错误的。正因为此,所以最可靠的技术手段是图像识别。类似这样在处理mirror,layout,overlap等等都需要这项技术。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2007-8-15 13:44:09 | 只看该作者
有点明白了。可是UI自动化测试为什么一定要依靠图像处理和神经网络技术呢?
比如你说的Garbage String, 到底为什么会出现这种情况呢?难道不能有其他的方法去检测?按理说,检验psedo code的build就应该可以保证了。如果psedo code不能保证,那就是大系统有问题了,跟你测试的模块没什么关系了。
我觉得既然他们有问题,不要用他们,换其他方法就好了。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-8-15 14:15:24 | 只看该作者
类似Grabage、Encoding目前只能靠看图,机器不能很好的识别,只能雇用懂语言的人力半自动化做。

你说的测试pseudo build是可行的,在整个周期中这个build的测试很大可能发现各类Feature的Bug,并且修复成本还划算。
但在上面的测试无法覆盖全,还不能完全取代Localization Build上的测试,因为有时候应用程序并非是按照系统要求的Design来设计。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2007-8-15 14:43:02 | 只看该作者
你说的很对,这也是为什么外企很多都在中国成立了localization team.
其实,大外企的localization都是外包出去的,内部的人不管,或者只是管少量的工作。
原因也就是你所说的,automation问题很大。如果从这项测试内容来说,可能现在没什么太好的办法自动化。
不过做这项工作挺boring的。做automation尽量去做其他的。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-8-21 12:23:31 | 只看该作者
自动化脚本开发设计,是一个一劳永逸的工作。
在回归测试中,自动化测试的优势就非常明显了。
不过如果在版本不稳定的前期测试中,我认为还是应该依靠手工测试。这个时候没有必要引入自动化测试。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2007-8-21 12:59:28 | 只看该作者
一般这个阶段是手工测试+自动化设计。
其实,自动化设计很关键,设计好了,实现起来会很快。
还有就是就算在不稳定的前期,一般来说还是有一些模块是稳定的,可以进行自动化的开发。
如果什么都不稳定,干脆别测了。手工测试也是浪费。本身开发人员就应该进行第一轮的测试从而保证他们负责的模块基本稳定。
不过如果因为某些原因,产品大规模的改动,开发,测试以前的工作都是很浪费,也不单单是自动化的问题了。
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2007-8-22 22:06:18 | 只看该作者
呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-8-23 12:26:41 | 只看该作者
借鉴
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2007-9-3 13:41:57 | 只看该作者
太难,现在还没有整明白!
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2007-9-11 10:53:03 | 只看该作者
楼主很强,我听过MS的测试培训课,MS用的方式就是你说的最后一种
他们把能自动化的全自动化了(包括上头说的本地化测试),比率达到
99%,不能自动化的是因为要求不能自动化,多是一些破坏性测试(断
电,数据破坏等)

[ 本帖最后由 猪肉佬 于 2007-9-11 10:56 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2007-9-11 10:54:12 | 只看该作者
原帖由 backtochendu 于 2007-8-15 11:16 发表
对于一个UI操作,该用"鼠标键盘"来完成还是使用API等方式来完成.

取决于你的测试阶段,你的focus是什么.

一个很简单的例子, 一个登录框. 你可以通过输入键盘,点击鼠标来进行"登录"操作, 也可以直接构造一个 ...


为什么用健盘鼠标会成为选择之一?用健盘鼠标对哪个focus有好处?
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2007-9-11 11:20:37 | 只看该作者
原帖由 shanxi 于 2007-8-15 10:12 发表
抱怨也是有一定道理的:

比如International UI自动化测试受限于图像处理和神经网络的基础研究一直以来没取得太大突破。神经网络自从上世纪70年代以来就一直没突破性进步。

International UI不就是本地化嘛,怎么还要用神经网络? 有点故弄玄虚了
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2007-9-12 15:49:46 | 只看该作者
就算希望自动化工具具有学习能力而搞神经网络,为什么只有International UI自动化测试有影响呢,其它方面的测试就不需要了?能再详细说说吗?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-16 08:41 , Processed in 0.078859 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表