一、找不到元素可能出现的原因:
1、元素表达式错误
2、不在指定的frame
3、等待时间短,页面加载速度慢
4、执行脚本打开了新的页面,不在指定的窗口中
二、优化web自动化测试效率
避免使用强制等待,会浪费等待的时间
三、PO模式的理解
1、PO模式实现代码的复用性
2、提高了代码的可维护性、可读性
- 将业务逻辑和测试逻辑相分离
- 当页面发生变化的时候,测试逻辑不需要发生改变,只需要改动业务逻辑
- 当测试逻辑发生变化的时候,业务逻辑不需要变化,只需要改动测试逻辑
3、页面方法一般是返回的是self或者其他页面
4、assert 断言不要写在页面当中
5、如果可能有多种情况的返回值,封装多个方法(行为)
四、稳定性和效率的问题
1、优先考虑稳定性
2、如果提升效率会造成稳定性影响,先不考虑提升效率
五、验证码的问题
1、开发关掉
2、开发设置万能验证码
六、什么样的项目适合做自动化测试
1、需求比较稳定、不会频繁变更的
2、项目周期比较长(优惠活动,中秋、端午,功能是一次性,花半个月写了一次代码)
3、代码复用性高,可以跨平台、跨系统
4、流程设计比较规范
5、经常需要的回归测试
七、pytest和unittest的区别
1、pytest有自动收集用例的的功能
2、pytest有上千种插件,自己的插件系统
3、pytest有失败重新运行的功能
4、pytest有非常灵活的测试夹具、fixture、setUp、tearDown
5、pytest和unittest是完全兼容的
八、影响web自动化的稳定性的因素有那些?
1、后端服务,加载一些静态页面,有时渲染的比较慢
九、自动化测试用例的流程(写代码的过程)
1、进行手工测试,熟悉流程、元素定位表达式准备好
2、形成测试步骤
3、转化为代码版的步骤
4、写代码
十、测试框架大概结构
1、common,公共方法层:封装一些常用的方法、日志配置文件、
2、config,配置层:日志级别、mysql数据库信息、账号信息
3、data,数据层:测试用例
4、img,图片层:页面报错截图
5、logs,日志文件层:脚本运行日志
6、output,测试报告层
7、pages,业务逻辑层
8、testcases,测试逻辑层
9、main文件:脚本入口
十一、 请列举出web自动化中你常用的断言(验证)方式
1、根据页面的url断言(验证跳转后的页面是否正确)
2、根据页面的标题(验证跳转后的标题是否一致)
3、根据页面的提示信息(充值成功后,跳转充值成功的文字)
4、根据某些元素的显示(跳转后的用户名)
十二、UI自动化测试用例如何设计?
UI自动化测试用例是从手工测试用例中提取出来的,跟手工测试相比,自动化测试用例更加注重用例的严谨性
1、优先选取覆盖产品核心功能的用例
2、从成本考虑,不要选择流程过于复杂的用例
3、选取的用例可以是重复执行,繁琐的部分,比如字段的验证、提示信息的验证
4、优先实现正向的测试用例,反向情况一般情况复杂,数量多,耗费时间
十三、为了提高UI自动化脚本的稳定性,你有做了哪些工作?
1、元素定位表达式,尽量选择相对路径的xpath表达式
2、查找元素优先使用显性等待
3、用例与用例之间尽量避免产生依赖
4、尽量保证单独的测试环境,避免其他同学同步运行
5、脚本运行失败后加入重运行机制,提高用例的稳定性
十四、利用PO模式
将业务逻辑和测试逻辑相分离,当页面发生变化的时候,不需要改变测试代码,改变页面代码即可;当测试逻辑发生变化的时候,不需要改动页面代码,改变测试代码即可
测试数据和用例分离,单独维护测试数据
十五、ui自动化实现你认为最困难的地方是什么
1、稳定性有时候不高
2、往往在提升效率的时候,会影响稳定性,稳定性排在第一位
3、需求经常变动,维护成本高
4、特殊元素难以定位
5、脚本不稳定
十六、请描述下你所设计的Web自动化框架的特点?
1、通过pytest单元测试框架组织管理测试用例
2、引入page object思想对用例进行分层设计,业务代码和测试代码相分离
3、页面元素共性操作提取:basepage封装,实现实时执行日志输出,异常实时捕获,用例失败截图
4、测试用例中,使用数据驱动
5、logging日志引入,问题定位
6、allure报表,用例失败后截图
7、用例失败重试,提高用例稳定性
8、集成到jenkins中,每天\小时构建多次
十七、如何做 UI 自动化?
1、在编写脚本前,我们会对需求进行评估,确认这个需求可不可以实现 UI 自动化,
2、如果可以的话,从手工用例中就筛选出能实现自动化测试的用例,一般作用于主流程测试、回归测试。
3、我们是用 selenium 工具来实现自动化,采用 python 脚本语言,pytest测试框架和PO模式搭建的UI自动化测试框架。
4、比如,充值这个功能的脚本,我们是这样做的:首先,根据搭建好的测试框架,测试框架包含 testcase,主要用来存放测试用例代码,report 用来存放测试报告,
5、其次我们会把用例中公共的部分封装到 common 中,
6、最后用 run.py文件运行项目自动化用例,
7、脚本调试完后,我们会用 jenkins 持续集成工具,设置脚本每天晚上 10 点跑一遍脚本,跑完后生成 html 格式的自动化测试报告并自动发送邮件
十八、web测试框架有什么可以优化的地方吗?
常用的方法,或者代码量比较多的方法,可以封装成一个公共方法,减少代码的书写、增强代码的可读性和可维护性
十九、框架中实现了那些分层?
页面逻辑和测试逻辑分层
测试数据和测试代码分层
元素定位locator和方法分层
basepage公共方法的分层
二十、你的自动化用例的执行策略是什么?
1、自动化测试用例是用来监控的,再次目的下,我们就把自动化测试用例设置成定时执行的,每30分钟执行一次,在jenkins上创建一个定时任务即可
2、必须回归的用例。有些测试用例,在产品任何变动上线之前都需要回归测试
3、不需要经常执行的测试用例,我们没有必要一直回归执行,毕竟是有时间消耗的,有些时候非必要的业务不需要经常回归
4、不需要经常执行的测试用例就需要人工执行,在jenkins创建一个任务,需要执行的时候人工构建