`
xuela_net
  • 浏览: 492567 次
文章分类
社区版块
存档分类
最新评论

设计自己的基于Selenium 的自动化测试框架-Java版(1) - 为什么selenium还需要测试框架?

 
阅读更多

本人自动化测试接触时间不久,如有误导,概不负责。

既然有了selenium这个开源的自动化的工具,为什么还要我们自己再去写一个框架?

Selenium是自动化的工具,当然是可以用在测试领域,但他不是为测试量身打造的。当然我们在编写简单的脚本的时候也不需要什么框架,随着时间的推移,或者脚本的变多,我们发现有很多重复的代码,这时候我们就可以把这些重复的代码提取出来,就形成所谓的框架。

首先一个普通的测试用例,比如以一个Excel为例(如下图),每一行代表一个测试步骤,每个步骤又包含(步骤名,描述,期望结果)3个部分。

TestNG + selenium我想网上也有很多人用的这两个来搭配。

我们自定义一个TestCaseClass(测试用例类)来定义一个Test Case(测试用例)。让后让Class继续Selenium中的SeleneseTestBase,SeleneseTestCase,或者SeleneseTestNgHelper.TestCaseClass的一个Method(方法)对应一个Test Step.Method Name对应Step Name

方法中Operationselenium.*一些actions)对应Description,方法中的Assertions(如AssertEqual)来对应Expected Result.

再加上启动selenium和关闭selenium的代码,这样一个TestCaseClass就可以运行起来了。

这时候如果我们要写10case,问题就来了。

1)每次运行TestCase都需要实例化selenium,都要start,和close。这写都重复能不能提取出来?

2)能不能设计自己的Actions(操作),能不能设计自己的Assertions(我叫做检查点)

3)能不能把selenium运行的一些环境信息(如OS,Browserserverport)保存到配置文件中?

4)能不能吧测试对象分离出来保存(比如保存到xml文件)?

5)能不能吧测试数据分离出来保存(比如保存到xmlexcel文件中)?,能不能实现数据迭代,而不只是重复的copy代码来实行不同的数据测试。

6)能不能一次执行10Case?当然也可以,TestNg有自己的配置文件,你可以定义NClass。但我有个定势思维,总不能Class文件和测试用例关联起来。

7)异常处理,如果一个Test Step失败了,会不会执行下面的步骤,还是直接跳过该本Case

8)如果一个TestCase失败了,下面的case还能不能执行?Case之间有没有依赖性?

9)有没有详细的log输出,当执行失败的时候,能精准的定位错误。因为自动化测试要无人值守,log也是至关重要。

10)有没有详细的测试结果输出,能不能多种格式(xml, html, excel等等),能不能自定义要输出的内容。

11)包括与其他测试工具协同工作,如autoitHudsonQC怎么使用Hudson来进行调度job去执行一套测试用例?怎么把测试结果上传到QC之类测试管理工具?和怎么让autoit和处理selenium干不了的工作等等。

这上面的问题是我工作中遇到的一些问题,TestNg并不能解决上面的全部,我们可以在TestNg的基础上加上一些从而来实现这些目的。当让可以自己写一套处理这些的方法。

可能我们在测试过程并不需要这么多功能,也可能会遇到更多的问题。最适合的就是最好的原理。

希望通过工作记录自己的工作下来,将上面的内容一步一步实现并整理出来。


http://blog.csdn.net/caiqcong/article/details/7594687

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics