自动化面试题
自动化:将人工测试转换成自动化脚本/工具去运行
优势:节省时间(20% - 30%),提高工作效率
Python + selenium/appium/airtest/requests + unittest + Jenkins
WEB自动化
1. 什么样的项目适合做自动化?
- 项目稳定,且项目时间充裕
- UI界面要稳定,不要频繁变更
- 测试人员要有代码基础
- 比较频繁的回归验证
- 软件维护周期长,有生命力
- 项目进度压力不大
2. selenium(webdrive)工作原理?
3. 什么时候做自动化?
功能测试稳定之后
4. 自动化测试怎么做?
- 编写脚本前先对系统进行整体风险评估,确认这个系统是否符合实现自动化
- 在现有系统的手工测试用例中进行整理,筛选出实现自动化测试的用例(一般优先实现冒烟测试用例的自动化)
- 编写脚本(可以说明实现自动化的架构、编译语言、框架及分层:用selenium工具来实现自动化,采用python脚本语言,基于unittest框架实现,和使用PO模式进行分层)
- 脚本调试完,每天跑1、2次,跑完生成html格式的自动化测试结果
- 检查测试结果中有没有失败的脚本。如果失败,就定位一下脚本失败的原因(原因:1. 测试环境不稳定;2. 开发修改代码没有通知到测试人员修改脚本;3. 开发引入新的问题)
如果是脚本问题就修改脚本,如果是系统问题就提交问题单
5. 脚本怎么组织的?
使用PO模式进行分层,详细描述
6. 自动化脚本的通过率是多少?
- 无异常,自动化脚本都是100%运行通过;
- 如果异常情况比较多(比如:1. 出现测试环境不稳定;2. 开发修改了代码没通知到测试人员及时修改脚本;3. 开发引入了新的问题等)自动化脚本通过率可能80%都不到。
7. unittest框架了解吗?
unittest框架,由setUp()–环境预置,testCase()— 测试用例,tearDown()----环境恢复,三大部分组成,unittest框架可组织执行测试用例,并且提供丰富的断言方法,判断测试用例是否通过,最终生成测试结果。
8. 怎样用python连接mysql数据。
9. 怎么用python做接口自动化吗?
10. 元素定位失败的原因
- 等待时间太短
- 元素不唯一
- 元素值是动态值
- 元素在另外一个表单
- 元素在另外一个页面
- 元素在前端是隐藏元素
11. 自动化脚本,如何切换不同的浏览器
使用对应的浏览器驱动,然后在脚本中更换不同的浏览器。
12. 自动化脚本失败的原因:
- 可能是测试环境的网络不稳定;
- 开发修改了代码没通知到测试人员修改脚本;
- 开发引入了新的问题。
13. 有些元素,在谷歌浏览器上能定位,在火狐浏览器上定位失败,是什么原因呢?
因为不同浏览器的内核不一样,CSS样式也会不一样。
14. 如何提高selenium脚本的执行速度?
- 提高网速;
- 少用sleep,多用隐式等待或显式等待。
15. 如果系统有验证码,怎么做自动化?
- 去掉验证码。
- 设置万能验证码。
- 用python调用OCR模块,自己写代码来识别。这种方法可以识别出简单的验证码。
- 调用第三方平台提供的接口进行识别。比如:斐斐打码,尖叫数据这些平台接口。
16. setUp(),tearDown()和setUpClass(),tearDownClass()的区别:
当测试用例有多个,setUp()和tearDown()就会被执行多次;不管测试用例有多少个,setUpClass()和tearDownClass()只会被执行一次。
17. xpath和CSS定位方式的区别:
- 语法不一样;
- CSS定位比较稳定。
18. 什么样的功能适合做自动化?
- 优化冒烟测试的主流程
- 操作频繁的功能测试
19. 自动化脚本/用例达到功能用例的多少(百分比)?
20%~40%(表述:一般是30%到40%,这个没有固定的,我们是优先将优先级高的测试用例,比如,冒烟测试的测试用例转换成自动化脚本的,后面有时间的时候再不断补充,能写多少写多少。)