自动化测试常见面试题

这里写目录标题

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 测试有哪几种环境?

  1. 本地环境: app 安装的手机环境和电脑搭建的自动化测试环境(比如安卓 SDK 等等) 。
  2. 服务器环境: war 包部署的服务器, 服务器可以通过浏览器访问, 也可以通过 app 去访问。(访问的是 web 程序的接口)

20.简单介绍一下 Android SDK 的安装步骤:

  1. 下载 jdk 和安卓 sdk
  2. 安装 jdk, 配置环境变量(java_home、 classpath、 path)

21.请简要介绍一下移动应用及其服务端的测试点?

  1. 移动应用主要有权限、安装运行卸载、UI、功能、性能、中断、兼容性、安全性、回归、升级更新、用户体验。(app 的 11 大测试点)
  2. 服务端有接口测试、性能测试、安全测试。

22.如何判断 app 的 bug 是客户端问题还是后台问题

这个要根据业务来,一般数据的问题前端的问题多些,一般做法是有问题提给前端开发, 他们知道是他们自己的问题还是后台返回的数据问题。

23.安卓中如何取出日志信息?

  1. 把安卓系统日志信息实时导入到本地: adb logcat -v time > d:\mylog.log
  2. 运行使用某个 app,实时获取该 app 的日志信息(cmd 里面的返回信息) adb shell monkey -p com.android.calendar -v 1000 > d:\mylog2.log

24.常见的 adb 命令:

  1. 查看当前连接的设备: adb devices
  2. 安装软件: adb install 路径\xx.apk
  3. 卸载软件: adb uninstall <包名>
  4. 从电脑上发送文件到设备: adb push <本地路径> <远程路径>
    adb push C:\test1.txt /sdcard/
  5. 从设备上下载文件到电脑: adb pull <远程路径> <本地路径>
    adb pull /sdcard/test1.txt D:
  6. 实时获取日志: adb logcat -v time > D:\mylog.log
  7. 登录终端设备 shell: adb shell
  8. 查找包名/活动名: adb logcat | findstr START
    (脚本中, cmp= 后面的值就是 包名/activity 名称)
  9. 启动 APP 启动
    adb shell am start -n packageName/activity
  10. 关闭 app
    语法: adb shell am force-stop 包名
  11. 监控 APP 启动时间
    adb shell am start -W packageName/activity
  12. Monkey 命令:
    adb shell monkey -v -p mypackage 50

25.APP 这么多主流机型如何测试 ?

我们公司就买了, 魅族, 华为, 小米, iphone7、 iphone8 、 iphone8plus 、 iphone x 测试兼容性,有些没有的机型,先借用同事的手机进行测试,同时申请公司购买,或者采用云真机。

26.App 崩溃(闪退),可能是什么原因导致的?

缓存垃圾过多:由于安卓系统的特性,如果长时间不清理垃圾文件.会导致越来越卡.也会出现闪退情况.
运行的程序过多,导致内存不足
应用版本兼容问题:如果应用版本太低,会导致不兼容,造成闪退。此外,有些新版本在调试中&

  • 5
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、linux 1,linux常用命令 2,某个时间段日志的查询 3,linux文件的上传和下载 二、功能测试 1,工作中所遇到的错误 2,测试流程: 3,测试计划元素: 4,测试报告元素: 5,测试点: 6,测试方法: 7,bug相关问题 8,adb常用命令 9,软件测试原则 10,测试用例编写的要素 11,测试用例的设计原则 12,软件产品质量特性 13,android四大组件 14,web测试和app测试的区别 15,app的anr的根本原因 16,app的crash的原因 17,h5页面图片未加载出来问题排查 18,区分原生和h5页面 19,为什么不能用jenkins打包 三、性能测试 1,了解jmeter 2,性能指标 3,如何做性能测试 四、接口测试 1,如何设计接口测试用例 2,为什么要做接口测试 3,接口测试的关注点 4,request处理cookie的三种方式 五、自动化测试 1,自动化核心框架 2,自动化测试的好处 3,自动化的前提 4,自动化测试的场景 5,元素定位的8种方式 6,如果一个元素无法定位,一般会考虑哪些原因 7,driver.close()和driver.quit()的区别 8,自动化脚本断言 9,判断页面元素是否存在 10,js在web自动化中的作用展示 11,自动化代码优化 12,selenium对比RF 13,自动化测试脚本三种等待 14,PO模式 六、HTTP协议 1,HTTP协议特点: 2,HTTP传输原理 3,get和post的区别 4,HTTP响应代码 5,osi七层模型 6,三次握手过程 7,session和cookie的区别 8,tcp和udp的区别 9,sockect通信原理 10,post的三种请求方式 七、数据库 1,sql分类 2,数据库事务特性:ACID 3,mysql索引的类型 4,池化思想 5,redis 6,如何提高数据库运行效率 八、java 1,面向对象的三个特征 2,重写和重载 3,比较sping,sping mvc 4,进程和线程的区别 5,java三层架构 6,处理异常 九、python 1,字符串反转的7种方法 2,new 和 _init_ 3,不使用中间变量交换两个变量的值 4,python四大内置高阶函数 5,python带颜色输出 6,python *args,**kargs用法 7,python常用模块 8,python多线程 9,python发送邮件 10,python操作图像 11,python的replace()方法的使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值