UI自动化测试 浅谈
接口,性能,UI自动化的工具选择
功能测试是基础,只有理解功能测试才能做好自动化测试
接口自动化测试:unitest,DDT
性能测试:Monkey、fillder、wireshark、postman、jmeter
UI自动化测试:Selenium,Appium,Robot Framework,Robot,unittest Appium,app log,robotium、uiautomation
管理工具:Jenkins、Docker
其它:Unix、Linux等操作系统,熟悉Oracle、Mysql等数据库
什么是UI自动化测试
UI层的自动化测试,这个应该再熟悉不过了,大部分测试人员的大部分工作都是对UI层的功能进行测试。例如,不断重复的对一个表单提交,结果查询等功能进行测试,不管什么样的产品,最终呈现给用户的是UI层。所以,测试人员应该更多的精力放在UI层。那么也正是因为测试人员在UI层投入大量的精力,所以,可以通过相应的自动化测试工具来模拟这些操作。UI层的自动化测试工具非常多,比较主流的是QTP,Robot Framework、watir、selenium 等
UI自动化测试分类
B/S 架构的 Web UI 测试自动化
APP 测试自动化
C/S 架构的 UI 测试自动化
不管使用什么技术来执行测试自动化至少包含以下几个步骤
1、找
找元素、控件、输入框、等等一切你想找的内容
2、控制
单击、双击、输入内容、下拉等等一系列操作属于控制的范畴
3、断言
做UI自动化测试,需要什么技能
前端相关技术:HTML、XML、JavaScript、TCP/IP协议等
编程语言:就像前面说的,selenium支持多种语言,根据个人情况选择
工具:比如selenium
需求分析:项目类型,生命周期,是否适合开展自动化测试等
Web UI自动化 APP自动化
如果是 Web UI 自动化、现成的框架有 Selenium 和 Robot Framework
如果是 APP 自动化、有 Appium 可以选择
如果 C/S 的程序是 Windows 标准控件的话、可以用 MSAA 或者 UIA 来做自动化
怎么做UI自动化测试
通过开源工具如python+selenium+集成部署工具,这种方法,需要有python语言基础,运用selenium的框架,进行web ui界面的元素定位、抓取,回放来测试
通过Robot Framework+selenium的dll+集成工具,这种方案,适合于没有开发语言基础,但可以通过已经封装好的事件关键字进行调用,从而进行自动化, 也是开源工具,但是工具更新维护较慢,会出现各种异常问题
通过UFT工具,企业商用级别的自动化测试工具,提供强大的录制、回放功能,但是产品需要付费,会有一定的产品成本
selenium学习路线
既然提到最多的工具是Selenium,那就要费力学习下了
- 配置测试环境,针对所学习语言,来配置你相应的selenium 测试环境
- 接着需要熟悉webdriver API ,API就是selenium 所定义一方法,用于定位,操作页面上的各种元素
- 先学习元素的定位,selenium 提供了id、name、class name、 tag name、link text、partial、link text、 xpath、css、等定位方法。xpath和css功能强大语法稍微复杂,在这其间你可能还需要了解更多的前端知识。xml ,javascript 等
- 定位元素的目的是为了操作元素,接就要学习各种元素有操作,输入框,下拉框,按钮点击,文件上传、下载,分页,对话框,警告框…等等
- 当可以模拟手工测试来操作页面上的各种元素,接着需要做的就是把这些“用例”组织起来
- 需要做的就是学习并使用单元测试框架,单元测试框架本身就解决了用例的组织与运行
- 接着又遇到了新的疑问,怎么知道用例运行失败还是成功。那么就需要在脚本中加一些验证与断言
为什么采用 Selenium 的模式
原因一,对于用户来说这是一个开源框架
原因二,Selenium 可无缝接入。这是一个用于Web应用程序测试的工具,支持多平台、多浏览器、多语言去实现自动化测试,Selenium2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭之类的),所以就像真正的用户在操作一样
目前支持:Mac、Windows操作系统,chrome、Firefox、IE浏览器
selenium元素定位统一入口
接触过 UI 自动化用例设计的话,都知道,如果想通过 selenium 操作一个元素,其中不可或缺的就是对元素定位的描述。定位一个元素的方法很多,常用的有 id,name,css,xpath 等,对应不同的定位方法selenium 在处理上也给出了不同接口,同时框架封装了一个方法供 driver 调用,主要功能就是解析描述元素的字符串自动判断是 id、css 还是 xpath。
Selenium元素定位
定位元素;调用接口操作该元素,其中定位一个元素的方法很多,常用的有 id,name,css,xpath,因为现在的服务器性能配置等都很好,所以跑一个WEB-UI用例可以不用考虑性能问题。从维护成本上考虑会优先选择 id、name,其次 css,最后用 xpath
不能保证每一个 web 系统的所有元素都能提供一个唯一 id 或 name,当然如果能和前端开发达成合作,那就很美好了。一般情况下都需要面对没有 id 和 name 这两个属性的情况。这时就可以使用 css 样式,很多时候 css 样式是能满足定位需求。当然在这些都不能满足需求的情况下就只能选择 xpath