最近在研究自动化测试,看到网上的资料有些乱,自己整理一下,以供交流。
现有自动化测试整理
应用 | 常用框架 | c |
---|---|---|
Web | Selenium/Appium | |
Android应用 | UIAutomator/Robotium/Appium | |
iOS应用 | UIAutomation/Appium | |
Windows应用 | UIAutomation/Appium |
上表中,本人并没有穷举每个应用的测试框架,因为太多,没有时间进行深入研究。
自动化测试框架理解
所谓自动化测试,一定要包含这么几个部分:
- 人将测试用例转换为机器能识别的程序(语言当然可以是多中多样的)
- 解析和执行程序的引擎(要能控制UI)
UIAutomation
为了应用能够更好测, 无所什么操作系统上的UI框架基本都提供了名为UIAutomation的测试技术(我更愿意称之为技术)来暴露控件的操作接口给外部。
其实有了这些接口就可以做自动化测试了,但是一般还是需要用特定的语言和特定的框架。这对一般的测试人员的要求是比较高的。同时我们还可能有远程测试的需求。
C/S
如果在被测设备中有一个服务器,接受特定指令就能控制App进行相应动作,就解决远程测试的需求。
如果在测试机上有一个客户端,并且支持各种不同语言,通过通讯与服务器交互数据,那是不是就解决了多语言多框架的问题呢?
看上去是这样的。
自动化测试框架选择
Appium哲学
- 不应该让自动化测试限定在某种语言和某个具体的框架,任何人都可以使用自己最顺手的语言和框架来做自动化测试
- 不要为了自动化而重新编译或修改测试app
- 不要重复造轮子
- 开源
这和我上面的期望是一致的,所以Appium是一个很好的选择。
Appium基本原理
- xxxDriver
被测App设备中服务器,负责接收命令来控制App进行动作和返回数据。 - Json Wire Protocol
通用的通讯协议 - Appium Client
会有库的支持和工具的支持。