1、接口自动化怎么做?web自动化怎么做?
项目组自动化刚开始起步时,搭建自动化测试框架的实施过程:
(1)可行性分析
项目组做自动化的可行性分析,自动化实现到什么样的程度。
(2)方案选型
调研测试团队对于自动化技术的程度,一般会伴随着demo的演示(selenium、RF、requests)
(3)执行计划,搭建自动化测试框架,逐步实现,发现框架的问题进行改善
指定计划,提取或编写自动化测试用例,有leader编写自动化测试框架,组员编写和调试自动化测试脚本,无人值守jenkins,脚本的维护。
(4)把自动化流程化
编写框架的使用文档和规范文档。
(5)持续不断的完善框架
这个事情是一直需要做的,并不是说框架马上做完之后完全就可以用了,用是可以用,但是当我们有新的或者特殊的业务之后,框架处理不了,就需要完善我们的框架,让框架兼容新的需求。
(6)将自动化测试标准推广到其他的项目。
2、web自动化测试用例如何设计:如何提高web自动化用例脚本的稳定性?
web自动化测试用例设计:
自动化测试用例是从功能测试用例中提取出来的,主要提取的是冒烟用例和回归测试的用例,提取需要遵循以下原则:
1)优先覆盖核心用能用例,核心流程用例
2)尽量不要选非主流程中的复杂的用例
3)选取一些重复执行的用例,经常需要回归的用例
4)一般选取正向用例,(核心流程的反向用例也可以选)
如何提高web自动化测试的稳定性(web自动化稳定性是一个很大的问题):
1)尽量使用相对路径定位元素,不要使用绝对路径
2)定位元素需要封装到显示等待,保证元素能够加载完成
3)用例和用例之间尽量避免依赖。(比如所有用例都依赖于登录,那这种情况没办法,登录有问题,后面所有用例都执行失败)
4)加入用例失败重跑机制(pytest自带这个功能)
5)自动化测试的环境区分开其他环境(自动化测试环境是一个独立的环境,不能跟测试环境或者开发环境混在一起,它是一个独立的环境)
另外,接口自动化,覆盖率是100%,没什么好选的,全都要做自动化,除非不能做。
3、异常处理
1)NoSuchElementException 找不到元素
2)NoSuchAttributeException 找不到属性
3)NoSuchFrameException 找不到frame帧
4)ElementNotVisibleException 元素不可见(元素中一旦有style display none这种属性,那这个元素就是不可见的)
5)ElementNotSelectException 元素不可选
6)TimeOutException 元素超时
7)ArrayIndexOutofException 数组下标异常
8)TypeExcpetion 类型异常(如需要字典,但传入字符串等)
4、python库
webdriver、webdriverWait、os(处理路径)、xlrd、xlwt(处理Excel)、time(休眠)、logging、sys、htmltestrunner、json、csv、jsonpath、yaml、requests、re、pytest、allure
5、自动化测试的过程遇到的问题
1)元素定位不到
2)自动化测试用例出现误报(自动化测试fail,手工执行成功,原因元素频繁变更、自动化测试环境和开发环境不一致)
3)每一次自动化测试的结果会被覆盖(脚本去做可以,但用jenkins持续集成去做,很难)
4)数据库校验
6、用的框架
web自动化:
python + selenium + unitest / pytest + ddt / parameters + htmltestrunner / allure + jenkins
RF + selenium2library
接口自动化:
python + requests + pytest + parameters + allure + jenkins +yaml
7、自动化中有那三类等待
线程等待:建议少用,否则代码执行速度会很慢(就是time.sleep线程休眠)
隐式等待:全局等待(必用,必须等所有元素加载完成才不再等待,一般会结合元素定位一起使用)
显示等待:一般会和一个匿名函数一起使用(等待指定的某一个元素加载完成,则不再等待)
8、接口自动化测试框架中,接口关联是怎么做到的?
1、通过一个yaml文件来独立地保存所有的中间提取的变量,这个变量在执行用例之前清空,conftest
2、在测试用例的yaml文件里面通过一个关键字extract提取变量:json提取和正则表达式提取
3、在下一个接口通过{{}}或${}或者热加载的方式取值
市面上70%-80%的接口自动化都是通过yaml来存储数据的
9、requests中的Session会话管理的作用是什么
很多接口中都需要使用cookie或session来记录登录状态,而很多的接口必须要有这个登录状态才可以请求成功,requests中的session会话管理的作用就是自动地实现cookie和session的登录状态。
市面上所有的接口自动化框架和接口自动化平台都是通过session来发送请求的。