`
hao8585
  • 浏览: 7887 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

用 Selenium 自动化验收测试

阅读更多
今天看到一篇使用Selenium做自动化验收测试的文章感觉还不错,和大家分享一下。
http://www-128.ibm.com/developerworks/cn/java/wa-selenium-ajax/
分享到:
评论
13 楼 jzk 2006-09-27  
moxie 写道
我喜欢用Java编写验收测试。上次花了大成本,大家把整个项目的function test从HTML格式转换到Java代码格式。如果HTML格式测试太多,比如超过500个左右,维护那个难呀。现在,鼓励大家测试尽量在单元测试中搞定。验收测试,主要是用来验证粒度更粗的操作流程。


selenium ide不是提供了转换的功能么?
12 楼 gigix 2006-09-20  
ajoo 写道
如果我开始写了一个星期的html文件忽然因为我需要复杂的重用,需要remote control模式,就完全不能用了,需要重写,这基本上不是“要做复杂的事就如何如何”,而是“如果你以后有一丁点可能作复杂的事从开始就要用remote controll”。呵呵,以后的事谁知道?得,为了保证以后不麻爪儿,大家都上来就remote controll了。html这种声明式的方法整个就是一个不能scale,看上去很美的花瓶而已。(当然,从市场角度,它肯定忽悠了无数人,功莫大焉)

你误会了。现在的状况是HTML TestRunner这种使用模式与Selenium Core这个原本应该是API的东西搅在一起,导致项目之间的依赖比较复杂。我们设想的是Core API保持简单,另外再建立一个能力与remote control相当、但使用HTML作为测试描述的test runner。
11 楼 ajoo 2006-09-20  
gigix 写道
ajoo 写道
问题是为什么是非此即彼?
我是程序员,我希望能够重用test case,但是同时我也觉得用html写原子test case挺好的,价格便宜量又足。

为什么不能用html写原子的,然后提供一种方法允许重用html各式的test case?(比如,弄个include命令,或者更灵活点,象freemarker一样可以自定义宏)

这个讨论也有历史了。简单说,Selenium项目有那么几位坚持认为不应该把Selenium自己的DSL做成无所不能的图灵完备语言,只应该提供必要的“操作”。要做复杂的事情,就用remote control模式,在Java底下去做。这也是remote control和selenium core拆分成两个项目的最主要原因。我的感觉是,现在Selenium的API太大,如果可以真正缩减成必要而最小化的操作集,那才是真正的“core”,然后在此基础上建立几种不同的运行模式。

晕。怎么扯上秃岭完备了? 又不需要提供loop, exception, if/else,哪里就完备了?就只要能够把一个html文件直接从script里面调用,另外加上一个include命令不就行了?

不是说简单的“要做复杂的事情,就用remote control模式”。

问题是,很多时候,我们都是从简单的东西开始的。并不知道以后会多么复杂。

如果我开始写了一个星期的html文件忽然因为我需要复杂的重用,需要remote control模式,就完全不能用了,需要重写,这基本上不是“要做复杂的事就如何如何”,而是“如果你以后有一丁点可能作复杂的事从开始就要用remote controll”。呵呵,以后的事谁知道?得,为了保证以后不麻爪儿,大家都上来就remote controll了。html这种声明式的方法整个就是一个不能scale,看上去很美的花瓶而已。(当然,从市场角度,它肯定忽悠了无数人,功莫大焉)

10 楼 gigix 2006-09-19  
ajoo 写道
问题是为什么是非此即彼?
我是程序员,我希望能够重用test case,但是同时我也觉得用html写原子test case挺好的,价格便宜量又足。

为什么不能用html写原子的,然后提供一种方法允许重用html各式的test case?(比如,弄个include命令,或者更灵活点,象freemarker一样可以自定义宏)

这个讨论也有历史了。简单说,Selenium项目有那么几位坚持认为不应该把Selenium自己的DSL做成无所不能的图灵完备语言,只应该提供必要的“操作”。要做复杂的事情,就用remote control模式,在Java底下去做。这也是remote control和selenium core拆分成两个项目的最主要原因。我的感觉是,现在Selenium的API太大,如果可以真正缩减成必要而最小化的操作集,那才是真正的“core”,然后在此基础上建立几种不同的运行模式。
9 楼 ajoo 2006-09-19  
gigix 写道
ajoo 写道
我一个同事就说他就从来都用ruby script写selenium。

可是script看起来不如html舒服啊。看来selenium得这个性感的html table有点看上去很美的意思阿。

实际上这个争执有历史了。对于非程序员(例如BA、QA)来说,HTML格式的测试案例(其实也就是一种测试DSL)更容易理解。而对于程序员来说,用Ruby或者Java编写测试案例有很多额外的奖励,例如可以写循环逻辑,可以封装方法,可以做复杂的setup/teardown等等。这个表面现象折射出来对Selenium的用法其实并非一种,有人用它做验收测试,有人用它来驱动开发。出发点不同,所以用的方式也不同。
(就苦了我们这些committer了,各种用法都得考虑……)

问题是为什么是非此即彼?
我是程序员,我希望能够重用test case,但是同时我也觉得用html写原子test case挺好的,价格便宜量又足。

为什么不能用html写原子的,然后提供一种方法允许重用html各式的test case?(比如,弄个include命令,或者更灵活点,象freemarker一样可以自定义宏)
8 楼 firebody 2006-09-19  
moxie 写道
我喜欢用Java编写验收测试。上次花了大成本,大家把整个项目的function test从HTML格式转换到Java代码格式。如果HTML格式测试太多,比如超过500个左右,维护那个难呀。现在,鼓励大家测试尽量在单元测试中搞定。验收测试,主要是用来验证粒度更粗的操作流程。


十分赞同。
7 楼 moxie 2006-09-19  
我喜欢用Java编写验收测试。上次花了大成本,大家把整个项目的function test从HTML格式转换到Java代码格式。如果HTML格式测试太多,比如超过500个左右,维护那个难呀。现在,鼓励大家测试尽量在单元测试中搞定。验收测试,主要是用来验证粒度更粗的操作流程。
6 楼 gigix 2006-09-19  
ajoo 写道
我一个同事就说他就从来都用ruby script写selenium。

可是script看起来不如html舒服啊。看来selenium得这个性感的html table有点看上去很美的意思阿。

实际上这个争执有历史了。对于非程序员(例如BA、QA)来说,HTML格式的测试案例(其实也就是一种测试DSL)更容易理解。而对于程序员来说,用Ruby或者Java编写测试案例有很多额外的奖励,例如可以写循环逻辑,可以封装方法,可以做复杂的setup/teardown等等。这个表面现象折射出来对Selenium的用法其实并非一种,有人用它做验收测试,有人用它来驱动开发。出发点不同,所以用的方式也不同。
(就苦了我们这些committer了,各种用法都得考虑……)
5 楼 ajoo 2006-09-19  
我一个同事就说他就从来都用ruby script写selenium。

可是script看起来不如html舒服啊。看来selenium得这个性感的html table有点看上去很美的意思阿。
4 楼 Readonly 2006-09-19  
ajoo 写道
有个疑问。
selenium的用html来表达test case很简洁。无论写还是读都很舒服。不过,接下来一个问题就是:怎么重用一些用tr, td写成的test case呢?


自己写一个javascript来生成这些需要重用的test case:
<script>
seleniumTestSuit.addTestMethod("click", "submitButton", "True");
seleniumTestSuit.addTestMethod("verifyText", "name", "ajoo");
</script>

然后将javascript include进来就可以了,这种写法比tr,td来得简单,偶现在不管能否重用,都用javascript来写了。
当然最好是提建议给gigix,让他们给selenium本身就加上这个支持。
3 楼 ajoo 2006-09-19  
这样的话,就是说我的那些要重用的tr, td写的test case就必须要用java,ruby来重新写一遍了?

也就是说一旦重用成为问题,整个test suite都要推翻用script写,鱼和熊掌不能兼得,感觉不是太舒服啊。

2 楼 robbin 2006-09-19  
ajoo 写道
有个疑问。

selenium的用html来表达test case很简洁。无论写还是读都很舒服。不过,接下来一个问题就是:怎么重用一些用tr, td写成的test case呢?

假设我用html写了一个test suite,测试,通过。然后又去写其他的test suite。

然后我发现,有那么几个test case是要在10个test suite之中重复使用的。

此时应该怎么办才能重用?

如果是一个编程语言,我自然可以把这些test case重构成一个函数,然后让这些test suite调用这个函数就好。

但是html的话怎么办?莫非selenium还要再带一个selenium server page? 或者free marker?


可以用Java和ruby编写test case的。关键是被测试的页面如果DOM结构改变了,那麻烦就大了,这Java/ruby写的test case还必须跟着重构才行。这重构就是一个困难。
1 楼 ajoo 2006-09-19  
有个疑问。

selenium的用html来表达test case很简洁。无论写还是读都很舒服。不过,接下来一个问题就是:怎么重用一些用tr, td写成的test case呢?

假设我用html写了一个test suite,测试,通过。然后又去写其他的test suite。

然后我发现,有那么几个test case是要在10个test suite之中重复使用的。

此时应该怎么办才能重用?

如果是一个编程语言,我自然可以把这些test case重构成一个函数,然后让这些test suite调用这个函数就好。

但是html的话怎么办?莫非selenium还要再带一个selenium server page? 或者free marker?

相关推荐

Global site tag (gtag.js) - Google Analytics