第三章 Webdriver API简介(下)

              ------Web自动化测试之Webdriver(python)--从零到熟练(系列)

3.3 检查点的设置

   自动化测试不像手工测试,在执行测试用例的过程中,我们可以随时看到结果,然后能判断正确与否。而自动化测试对应的就是检查点,如果不设置检查点,只有测试步骤的自动化测试是没有任何作用的。因为执行步骤执行完了,结果不是我们想要的时候,测试用例也是正确的。所以检查点才是自动化测试执行成功或是失败的检验标准,而检查点的设置是发现Bug的关键。

3.3.1 常用的检测点设置方法

   我们通过了一系列的操作后,就需要检查测试执行的结果,常用的就是Assert相关的函数。下面我们谈一下最常用的两种方法:

(1)手工设置检测点

在我们测试用例执行完成之后,对测试结果进行检测。我们还是个例子来说明一下:

例子:在众筹网上喜欢一个项目,在进行了一系列的喜欢操作后,我们要检测操作是否成功。

Ø  进入到“喜欢的项目”列表页,检查是否有刚刚喜欢的项目。

Ø  我们可以直观地看到有喜欢的项目,可是怎么用程序判断呢?如图3.3.1.1所示:

第三章 <wbr>Webdriver <wbr>API简介(下)

3.3.1.1 检查喜欢的项目

Ø  我们要先定位项目名称“Girls Summit组合首张EP众筹”对应的Xpath:“//div[@class='m-location']/table/tbody/tr[2]/td/div/div/p/a”,然后获取这个元素对应的Text

Ø  将获取到的Text与“Girls Summit组合首张EP众筹”字符串进行assertEquals(),如果相同,则说明喜欢成功。否则,喜欢操作失败。

Ø  同样方法验证一下日期是不是今天,如果不是,可能是先前喜欢的操作,测试用例仍然失败。

(2)Selenium IDE设置检测点

我们也可以用Selenium IDE录制测试用例,在操作完成后,需要添加检测点,此时只要利用Selenium IDE提供的“Show all Available Commands”菜单选择合适的检测点即可。

例如:同样是上面的那个喜欢项目操作的例子,我们的设置步骤如下:

Ø  进入到“喜欢的项目”列表页,检查是否有刚刚喜欢的项目。

Ø  如图3.3.1.2所示,右击项目名称,选择“Show all Available Commands”菜单,然后在打开的子菜单中选择合适的Assert菜单。

第三章 <wbr>Webdriver <wbr>API简介(下)
3.3.1.2 selenium IDE设置检测点

Ø  然后Selenium IDE中就会出现相应的assert命令,如图3.3.1.3所示:

第三章 <wbr>Webdriver <wbr>API简介(下)
3.3.1.3 Selenium IDE记录Assert操作

Ø  转化成相应的编码,如python,就可以直接拷到测试用例中使用。转化后的编码如:self.assertEqual(u"Girls Summit组合首张EP众筹", driver.find_element_by_link_text(u"Girls Summit组合首张EP众筹").text)

3.3.2 检测点设置技巧

正如我们上面所说的,好的检测点是发现Bug的关键。但是并不是说检测点设置的越多越好,因为检测点会消耗机器资源,测试用例出错的时候增加排查难度。所以如何设置检测点呢?通常可以参考如下方法:

(1)根据测试用例的侧重点设置检测点

每个测试用例都有测试的重点,比如说,我们测试登录的时候,登录是否成功,就需要检测。但是在我们测试喜欢项目的时候,需要先登录,这个时候登录就不需要设置检测点了,因为在登录测试用例中已经测试过了。

(2)设置检测点要全面

我们在编写测试用例的时候,一定要全面了解测试操作影响了哪些儿方面。对影响到的地方,都设置一下检测点,防止出现遗漏的地方。

(3)设置检测点要灵活

设置检测点的时候,我们通常会比较一下实际的结果和预期结果是否相同。可是有些儿时候,我们不能简单地进行是否相等来判断。比如说:检测图片的时候,可能会检测图片是否显示;有的检测对象在某些儿页面会换行或是添加空格,与预期有变化,这个时候我们可以判断是否包含关键字即可。灵活使用各种判断函数,才能使自动化测试用例更加健壮。

3.3.3 检测点设置中常见的错误

   在测试过程中,我们编写了测试用例,设置了检测点,可是在测试用例投入使用的过程中,我们不得不反复修改测试用例。因为测试用例总是通不过,维护成本很高。虽然这一部分是因为被测对象变化造成的,还有一部分原因是检测点设置的不对。所以常见的检测点设置中的错误如下:

(1)检测动态变化的元素

检测点不能随着操作而变化,比如说翻页。我们想要测试翻页是否成功,就不能去检测第二页第一个元素是否是某个项目。因为如果项目增加的话,第二页第一个元素的项目可能会变化。应该先取一下第一个位置的项目名称,然后翻页,再判断现在第一个位置的项目是不是和刚刚获取的项目名称相同,如果不同,就证明翻页成功。

(2)遗漏检测点

在一个测试用例中,我们要检测所有影响到的地方。如喜欢项目操作,如果我们只检测我的喜欢项目列表中有没有刚刚喜欢的项目,这是不够的。还要检测一下这个项目的喜欢数据是否+1,喜欢项目的入口是否变成已喜欢等相关检测点。

(3)检测点设置过多

既然你说了,检测点是检测Bug的关键,我们就在每一步操作后添加检测点。这样做也是多余的,虽然检测点多了,更加安全一点儿,但是过多的检测点儿影响测试用例运行。而且测试用例如果出错了,我们去定位错误的时候,也非常困难,或是一个测试用例出错会导致相关的测试用例无法执行。

(4)忘记设置检测点或是检测点不是测试重点

新手写自动化测试用例的时候,往往会写了每一步的测试操作代码,没有添加对应的检测点或是检测点设置不正确。明明是登录操作,操作完成之后却检测页面显示是否正确,这样会不管操作成功与否,测试用例都不会报错,使自动化测试用例失去了意义。

(5)检测需要刷新才有反映的元素

在测试的时候,有些儿元素在操作完成后需要刷新一下页面才能显示出操作的结果。手工测试的时候,一般会触发刷新操作,可是自动化的时候,如果不刷新,就不符合预期结果。所以我们要添加刷新页面的代码,然后再去检测。

这几种是常见的错误,当然也会有一些儿比较奇葩的检测点设置错误的情况。在此也不能一下列举了,遇到问题,要多尝试几种方法,会在网上搜索解决办法,这也是学习自动化测试必备的技能。 

3.4本章小结

本章的标题虽然是Webdriver API简介,可是我们并没有把重点放在API介绍上,因为Webdriver API网上有官方的文档,也有相当多的相关的文档。我们把重点放在了页面元素的定位及检测点的设置,而且还包含常见的错误,这也是自动化测试中非常关键的部分,是写好自动化测试必备的技术。希望大家好好学习,在后面的章节中,我们将主要讲解自动化测试用例的编写,其中涉及到的元素定位和检测点的设置,我们将不在详述了。

 

posted @ 2015-03-02 17:48  潜龙9527  阅读(171)  评论(0编辑  收藏  举报