- 自动化测试基础-分层自动化测试 1.1 单元自动化测试:单元自动化测试是指对软件中的最小可测试单元进行检查和验证。 将单元测试交给测试人员去做,有利有弊,整体来说,由开发人员去做更为合适。 测试人员做单元测试的优势是具备测试思维,在设计测试用例时考虑更加全面;但劣 势也很明显,目前,大多数测试人员很难做到像开发人员一样熟悉被测代码。 让开发人员去写单元测试,优势非常明显,没有谁比开发人员更熟悉自己写的代码了 他们只需掌握单元测试框架的使用和一些常用的测试方法,即可写单元测试,而且定位 bug 时更加方便。 所以,测试人员可以教开发人员如何使用单元测试框架和测试方法,而不是代替开发 人员去写单元测试。
1.2 接口自动化测试:Web 应用的接口自动化测试大体分为两类:模块接口测试和协议接口测试。 (1)模块接口测试,主要测试程序模块之间的调用与返回。它主要强调对一个可实现 完整功能的类、方法或函数的调用的测试。 (2)协议接口测试,主要测试对网络传输协议的调用,如 HTTP/SOAP 等,一般应用 在前端和后端开发之间,以及不同项目之间。 模块接口测试更适合开发人员去做;协议接口测试既可以由开发人员去做,也可以由 测试人员去做。
1.3 UI自动化测试:UI 自动化测试以实现手工测试用例为主,可降低系统功能回归测试的成本(人力成本 和时间成本)。UI 自动化测试由部分功能测试用例提炼而来,更适合测试人员去做。 在《Google 测试之道》一书中,Google 把产品测试类型划分为:小测试、中测试和大 测试,采用 70%(小)、20%(中)和 10%(大)的比例,分别对应测试金字塔中的 Unit 层、Service 层和 UI 层。
2.元素定位
2.1 id定位
HTML 规定,id 在 HTML 文档中必须是唯一的,这类似于我国公民的身份证号,具有 唯一性。WebDriver 提供的 id 定位方法是通过元素的 id 来查找元素的。通过 id 定位百度输 入框与百度搜索按钮的用法如下。 find_element_by_id("kw") find_element_by_id("su") find_element_by_id()方法是通过 id 来定位元素的。
2.2 name定位
HTML 规定,name 用来指定元素的名称,因此它的作用更像是人的姓名。通过 name 定位百度输入框的用法如下。 find_element_by_name("wd") find_element_by_name()方法是通过 name 来定位元素的。
2.3 class定位
class 定位 HTML 规定,class 用来指定元素的类名,其用法与 id、name 类似。通过 class 定位百 度输入框的用法如下。 find_element_by_class_name("s_ipt") find_element_by_class_name()方法是通过 class 来定位元素的。
2.4 tag定位
HTML 通过 tag 来定义不同页面的元素。例如,一般用来定义输入框,标签 用来定义超链接等。不过,因为一个标签往往用来定义一类功能,所以通过标签识别单个 元素的概率很低。例如,我们打开任意一个页面,查看前端代码时都会发现大量的
find_element_by_tag_name("input")
find_element_by_tag_name()方法是通过元素的标签名来定位元素的。
2.5 link定位
link 定位与前面介绍的几种定位方法有所不同,它专门用来定位文本链接。百度输入 框上面的几个文字链接的代码如下。 新闻 hao123 地图 视频 贴吧 查看上面的代码可以发现,通过 name 定位是个不错的选择。不过这里为了演示 link 定位的使用,现给出通过 link 定位链接的用法如下。
find_element_by_link_text("新闻")
find_element_by_link_text("hao123")
find_element_by_link_text("地图")
find_element_by_link_text("视频")
find_element_by_link_text("贴吧")
find_element_by_link_text()方法是通过元素标签对之间的文字信息来定位元素的。