浅谈UI测试自动化

测试自动化的目的

引入自动化测试的目的在于,把枯燥的重复的手工操作进行脚本化;
所以,不要为了自动化而自动化,测试自动化引入是有前提条件的,

  • 1、版本周期不能太短、快速迭代的项目是不适合做测试自动化
  • 2、版本主要主流程要基本稳定

自动化的三大入手点:

  • 1、成本;
    自动化并不一定围绕测试执行,还可以包括测试的准备,log的提取,数据分析等等。
    将所有的与测试有关的工作逐一列出,然后找到重复的,可以被代码化的部分,评估现有工作成本和自动化成本,
    寻找到收益最大的工作块并顺序将之代码化。
  • 2、质量;
    和成本差不多,只是在评估的时候需要评估的是该工作块现有的质量状况和需求质量间的差异,寻找到差异最多的那个模块,
    并将所有质量差的模块逐一进行自动化。

  • 3、 时间;
    需要寻找到与测试有关的所有步骤和工作块,将其中关键路径上,动作最慢,耗时最大、经常重复的部分进行自动化。

UI测试自动化分类

测试自动化大致可以分为下面几种情形

  • 1、B/S架构的 Web UI测试自动化
  • 2、APP 测试自动化
  • 3、C/S架构的UI测试自动化

    不管你使用什么技术来执行测试自动化至少都得包含如下几个步骤

  • 1、元素位置定位

  • 2、操作、输入
  • 3、判断预期输出

Web测试自动化的元素定位

Web UI测试自动化中比较常用的定位方法;

比如查找id、name、class、甚至可以使用xpath和css这类通用性的定位方法;

常用的测试自动化工具有selenium、robotframework等等等

br.find_element_by_id("loginButton").chick()

上面这行代码中、我们在页面中查id=loginButton的元素、并点击

APP UI测试自动化的元素定位

APP由于存在Native App、Web App、Hybrid app几种模式;

但是APP的UI元素识别基本上也可以用id、name、class以及xpath来定位的

而目前常用的APP UI测试自动化工具有appium、UIAutomator、Monkeyrunner等等

C/S架构UI测试自动化的元素定位

C/S架构的UI 也就是我们常用的PC电脑程序;

1、微软标准控件的应用程序;可用Win32 api以及MSAA/UIA来操作控件、而不是定位控件。

2、如果非标准控件开发的应用程序;可用基于坐标的方式来确定按钮位置

常用的工具:Win32 Api、UIA、按键精灵、AutoIt等等

结束语

不管使用了什么技术;自动化、性能、接口、手工、单元......最终都要回到业务上。

参考资料

自动化测试和测试自动化的区别