研究selenium有一段时间了,毕业后做了一段时间的android,对web不是很熟,自己正在写一个框架,基本上也是在围绕着以下的问题:

这里借鉴前辈们的资源,以下为转载,也描述了自己入门时的一些疑问

疑问

既然有了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)包括与其他测试工具协同工作,如 autoitHudson QC 怎么使用 Hudson来进行调度job去执行一套测试用例?怎么把测试结果上传到QC之类测试管理工具?和怎么让autoit和处理selenium干不了的工作等等。

 

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

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

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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐