这里写目录标题
- 1.1.Selenium WebDriver查找页面元素及元素操作
-
- 1. Web自动化测试
- 2.Selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
- 3.如何提高Selenium脚本的执行速度?
- 4.用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?
- 5.你的自动化用例的执行策略是什么?
- 6.自动化测试的时候是不是需要连接数据库做数据校验?
- 7.id,name,class,xpath, css selector这些属性,你最偏爱哪一种,为什么?
- 8.如何去定位属性动态变化的元素?
- 9.点击链接以后,Selenium是否会自动等待该页面加载完毕?
- 10.什么是page object设计模式?
- 11.如何在定位元素后高亮元素(以调试为目的)?
- 12.什么是断言?
- 13.你觉得自动化测试最大的缺陷是什么?
- 14.Webdriver可以用来做接口测试吗?
- 15.Android APP 内存不足时, 系统如何结束进程获得内存?
- 16.APP 测试常见的严重问题有哪些? 分别引起的原因有哪些?
- 17.请简单介绍你曾使用过的一款 APP 自动化测试工具 ?
- 18.Android 测试与 web 测试有什么区别?
- 19.app 测试有哪几种环境?
- 20.简单介绍一下 Android SDK 的安装步骤:
- 21.请简要介绍一下移动应用及其服务端的测试点?
- 22.如何判断 app 的 bug 是客户端问题还是后台问题
- 23.安卓中如何取出日志信息?
- 24.常见的 adb 命令:
- 25.APP 这么多主流机型如何测试 ?
- 26.App 崩溃(闪退),可能是什么原因导致的?
- 27.Appium 都有哪些启动方式
- 28.请简单介绍一下使用过的安卓UI自动化测试工具?
- 29.请说明Android手机和IOS手机,系统有什么区别?
- 30.按你的理解,软件接口是什么?
- 31.HTTP和HTTPS协议区别?
- 32.HTTPS在哪一层?
- 33.get和post区别是什么?
- 34.常见的POST提交数据方式
- 35.什么是Http协议无状态协议?怎么解决HTTP协议无状态协议
- 36.cookie和session的区别
- 37.请求接口中常见的返回状态码
- 38.什么是DNS?
- 39.怎么设计接口测试用例?
- 40.你做接口测试,测什么?
- 41.平常用什么工具测接口的?
- 42.没有接口文档,如果做接口测试?
- 43.在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?
- 44.依赖于第三方数据的接口如何进行测试?
- 45.接口测试中,依赖登录状态的接口如何测试?
- 46.如何模拟弱网做测试?
- 47.你平常做接口测试的过程中发现过哪些bug?
- 48.当一个接口出现异常时候,你是如何分析异常的?
- 49.如何分析一个bug是前端还是后端的?
- 50.你们做接口测试自动化吗?
- 51.列出几个JMeter监听器?
- 52.在python中进行数据驱动测试
- 53.接口自动化中的关联怎么处理?
- 54.自动化测试怎么校验结果?
- 55.自动化使用的测试框架是什么?简述自动化框架的设计、维护
- 56.具体的在这个项目中自动化怎么应用到实际的,您对自动化结果的分析
- 2.0.Selenium UI自动化测试中元素定位不到的原因和解决方法
1.1.Selenium WebDriver查找页面元素及元素操作
1.1.1.元素常用定位
Id name class_name xpath
1.通过id定位元素:find_element_by_id(“id_vaule”)
2.通过name定位元素:find_element_by_name(“name_vaule”)
3.通过tag_name定位元素:find_element_by_tag_name(“tag_name_vaule”)
4.通过class_name定位元素:find_element_by_class_name(“class_name”)
5.通过css定位元素:find_element_by_css_selector();用css定位是比较灵活的
6.通过xpath定位元素:find_element_by_xpath(“xpath”)
7.通过link_text定位:driver.find_element_by_link_text(“新闻”).click()
8.通过partial link_text 定位:driver.find_element_by_partial_link_text(“闻”).click()
1.1.2.定位分类总结
1.Id,name,class name:为元素属性定位
2.tag_name:为元素标签
3.link text 、partial link text:为超链接定位(a标签)
4.Xpath:为元素路径
5.Css :为css元素选择器定位
1. Web自动化测试
Selenium中hidden或者是display = none的元素是否可以定位到?
不能,可以写JavaScript将标签中的hidden先改为0,再定位元素
2.Selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
1.添加元素智能等待时间 driver.implicitly_wait(30)
2.添加强制等待时间(比如python中写 sleep)
3.try 方式进行 id,name,clas,x path, css selector 不同方式进行定位,如果第一种失败可以自动尝试第二种
3.如何提高Selenium脚本的执行速度?
代码优化,多任务,分布式部署都是可以提升脚本执行速度的。
4.用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?
1.time.sleep( )
2.driver.implicitly_wait(30)
3.多用 try 捕捉,处理异常
5.你的自动化用例的执行策略是什么?
自动化测试与软件开发本质上是一样的,利用自动化测试工具,经过测试需求分析,设计出自动化测试用例,从而搭建自动化测试的框架,设计与编写自动化脚本,验证测试脚本的正确性,最终完成自动化测试测试脚本(即主要功能为测试的应用软件)并输出测试结果
6.自动化测试的时候是不是需要连接数据库做数据校验?
从数据库层面来进行数据校验可以更方便验证系统的数据处理方面是否正确,数据处理逻辑正常后,UI层面上的校验也是需要做的。
7.id,name,class,xpath, css selector这些属性,你最偏爱哪一种,为什么?
css 、xpath 几乎所有的元素都可以定位到,但是它们的短处在于页面上更改了元素后位置很容易改变,所以首先使用的还是id或者name等。
如何去定位页面上动态加载的元素?
触发动态加载元素的事件,直至动态元素出现,进行定位
8.如何去定位属性动态变化的元素?
xpath或者css通过同级、父级、子级进行定位
9.点击链接以后,Selenium是否会自动等待该页面加载完毕?
会的
10.什么是page object设计模式?
简单来说,就是把页面作为对象,在使用中传递页面对象,来使用页面对象中相应的成员或者方法,能更好的体现面向对象语言(比如java或者python)的面向对象和封装特性。
11.如何在定位元素后高亮元素(以调试为目的)?
用JavaScript等脚本来重置元素属性,给定位的元素加背景、边框
12.什么是断言?
断言的英文是assertion,断言检查的英文是assertion checking。
断言是指定一个程序必须已经存在的状态的一个逻辑表达式,或者一组程序变量在程序执行期间的某个点上必须满足的条件。
13.你觉得自动化测试最大的缺陷是什么?
1.不稳定
2.可靠性
3.不易维护
4.成本与收益
14.Webdriver可以用来做接口测试吗?
接口测试有现成的模块来处理,WebDriver是用于做WebUI自动化测试的。如果要实现接口测试,可以使用Requests模块来实现
APPUI自动化测试
15.Android APP 内存不足时, 系统如何结束进程获得内存?
系统优先结束被挂起(暂停)的进程,释放内存
16.APP 测试常见的严重问题有哪些? 分别引起的原因有哪些?
常见的有 crash、ANR(应用无响应、卡死),一般由设备碎片化、网络波动大、内存泄漏、代码编写错误
17.请简单介绍你曾使用过的一款 APP 自动化测试工具 ?
开放性问题,带点主观意见
1.对比其他熟悉的自动化工具的优缺点
2.自动化的简要方案(简要的同时关键内容请具体)。(提示: appnium 等)
18.Android 测试与 web 测试有什么区别?
相同点:
1.设计测试用例均依据等价类、边界值等方法,测试原理相同;
2.大多数都采用黑盒测试方法来验证业务功能;
3.需要检查界面布局、风格和按钮是否美观、统一等(UI测试);
4.测试页面载入和翻页的速度、登录时长是否溢出等问题(性能测试)
5.测试应用系统的稳定性;
不同点:
1.手机作为通信工具,通信等一些行为会对APP产生(中断测试)
2.手机用户对app 产品的安装卸载操作:从上一版本/上两个版本直接升级到最新版本(安装卸载测试);
3.web自动化测试使用的工具较常用的是selenium,而android手机自动化测试比较常用的自动化工具是monkey、monkeyrunner、Appium(测试工具不一样)
19.app 测试有哪几种环境?
- 本地环境: app 安装的手机环境和电脑搭建的自动化测试环境(比如安卓 SDK 等等) 。
- 服务器环境: war 包部署的服务器, 服务器可以通过浏览器访问, 也可以通过 app 去访问。(访问的是 web 程序的接口)
20.简单介绍一下 Android SDK 的安装步骤:
- 下载 jdk 和安卓 sdk
- 安装 jdk, 配置环境变量(java_home、 classpath、 path)
21.请简要介绍一下移动应用及其服务端的测试点?
- 移动应用主要有权限、安装运行卸载、UI、功能、性能、中断、兼容性、安全性、回归、升级更新、用户体验。(app 的 11 大测试点)
- 服务端有接口测试、性能测试、安全测试。
22.如何判断 app 的 bug 是客户端问题还是后台问题
这个要根据业务来,一般数据的问题前端的问题多些,一般做法是有问题提给前端开发, 他们知道是他们自己的问题还是后台返回的数据问题。
23.安卓中如何取出日志信息?
- 把安卓系统日志信息实时导入到本地: adb logcat -v time > d:\mylog.log
- 运行使用某个 app,实时获取该 app 的日志信息(cmd 里面的返回信息) adb shell monkey -p com.android.calendar -v 1000 > d:\mylog2.log
24.常见的 adb 命令:
- 查看当前连接的设备: adb devices
- 安装软件: adb install 路径\xx.apk
- 卸载软件: adb uninstall <包名>
- 从电脑上发送文件到设备: adb push <本地路径> <远程路径>
adb push C:\test1.txt /sdcard/ - 从设备上下载文件到电脑: adb pull <远程路径> <本地路径>
adb pull /sdcard/test1.txt D: - 实时获取日志: adb logcat -v time > D:\mylog.log
- 登录终端设备 shell: adb shell
- 查找包名/活动名: adb logcat | findstr START
(脚本中, cmp= 后面的值就是 包名/activity 名称) - 启动 APP 启动
adb shell am start -n packageName/activity - 关闭 app
语法: adb shell am force-stop 包名 - 监控 APP 启动时间
adb shell am start -W packageName/activity - Monkey 命令:
adb shell monkey -v -p mypackage 50
25.APP 这么多主流机型如何测试 ?
我们公司就买了, 魅族, 华为, 小米, iphone7、 iphone8 、 iphone8plus 、 iphone x 测试兼容性,有些没有的机型,先借用同事的手机进行测试,同时申请公司购买,或者采用云真机。
26.App 崩溃(闪退),可能是什么原因导致的?
缓存垃圾过多:由于安卓系统的特性,如果长时间不清理垃圾文件.会导致越来越卡.也会出现闪退情况.
运行的程序过多,导致内存不足
应用版本兼容问题:如果应用版本太低,会导致不兼容,造成闪退。此外,有些新版本在调试中&