• 14
  • 13
分享

自动化面试题记录整理(部分答案自己整理)

1、selenium中如何判断元素是否存在?

没有提供原生的方法判断元素是否存在,一般我们可以通过定位元素+异常捕获的方式判断

2、selenium中hidden或者是display = none的元素是否可以定位到?

不可以,想点击的话,可以用js去掉dispalay=none的属性

3、selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?

  • 首先通过封装find方法,实现wait_for_element_ispresent(WebDriverWait)

  • 在对页面进行click之前,先滚动到该元素(通过Js封装),避免在页面未加载完成前或是在下拉之后才能显示。

  • 不同方式进行定位,与expected_conditions判断方法封装,循环判断页面元素出现后再操作;

  • 开发人员规范开发习惯,如给页面元素加上唯一的name,id等。

4、如何提高selenium脚本的执行速度?

  • 优化测试用例。设置等待时间的时候,少用sleep,尽量不用implicitly_wait,多用显式等待方法;

  • 减少不必要的操作步骤。如经过三四步才能打开要测试的页面的话,可以直接通过网址来打开;

  • 中断页面加载。如果加载的内容不影响我们测试,就设置超时时间,中断页面加载;

  • 使用Selenium grid,通过testNG实现并发执行。 在编写测试用例的时候,实现松耦合,然后再服务器允许的情况下,尽量设置多线程实现并发运行。

5、用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?

  • 在经常检测失败的元素前尽量加上显式等待时间,等要操作的元素出现之后再执行下面的操作;

  • 多线程的时候,减少测试用例耦合度,因为多线程的执行顺序是不受控制的;

  • 多用 try 捕捉,处理异常;

  • 尽量使用测试专用环境,避免其他类型的测试同时进行,对数据造成干扰。

6、如何设计高质量自动化脚本

  • 使用四层结构实现业务逻辑、脚本、数据分离。

  • 使用PO设计模式,将一个页面用到的元素和操作步骤封装在一个页面类中。如果一个元素定位发生了改变,我们只用修改这个页面的元素属性

  • 对于页面类的方法,我们尽量从客户的正向逻辑去分析,方法中是一个独立场景,例如:登录到退出,而且不要想着把所有的步骤都封装在一个方法中。

  • 测试用例设计中,减少测试用例之间的耦合度。

7、你的自动化用例的执行策略是什么?

  • 自动化测试用例是用来监控的。集成到jenkins,创建定时任务定时执行;

  • 有些用例在产品上线前必须回归。jenkins上将任务绑定到开发的build任务上,触发执行;

  • 有些用例不需要经常执行。jenkins创建一个任务,需要执行的时候人工构建即可。

8、什么是持续集成?

频繁的将代码集成到主干,持续性的进行项目的构架,以便能能够快速发现错误,防止分支大幅度偏离主干

9、自动化测试的时候是不是需要连接数据库做数据校验?

UI自动化不需要

接口测试会需要

10、Selenium有几种定位方式?你最偏爱哪一种,为什么?

Selenium有八种定位方式:

与name有关的有三种:name、class_name、tag_name

与link相关的有两种:link_text、partitial_link_text

与id有关:id

全能选手:xpath、css_selector

如果存在id,我一定使用Id,因为简单方便,定位最快。其次是Xpath,因为很多情况下html标签的属性不够规范,无法唯一定位。Xpath是通过相对位置定位

如果没有,那么CSS定位器应该被优先考虑,因为在大多数现代浏览器中,它们的评估速度比XPath更快。

11、如何去定位页面上动态加载的元素?

首先触发动态事件,然后再定位。如果是动态菜单,则需要层级定位。——JS实现(对动态事件封装)

12、如何去定位属性动态变化的元素?

先去找该元素不变的属性,要是都变,那就找不变的父元素,用层级定位(以不变应万变)

属性动态变化也就是指该元素没有固定的属性值,可以通过:

JS实现,

通过相对位置来定位,比如xpath的轴,paren/following-sibling/percent-sibling

13、点击链接以后,selenium是否会自动等待该页面加载完毕?

不会的。所以有的时候,当selenium并未加载完一个页面时再请求页面资源,则会误报不存在此元素。所以首先我们应该考虑判断,selenium是否加载完此页面。其次再通过函数查找该元素。

14、webdriver client的原理是什么?

在selenium启动以后,driver充当了服务器的角色,跟client和浏览器通信,client根据webdriver协议发送请求给driver。driver解析请求,并在浏览器上执行相应的操作,并把执行结果返回给client.

15、webdriver的协议是什么?

WebDrive协议本身是http协议,数据传输使用json

16、启动浏览器的时候用到的是哪个webdriver协议?

-http

17、什么是page object设计模式?

  • 通俗来讲,把每个页面当成一个页面对象,页面层写定位元素方法和页面操作方法

  • 用例层从页面层调用操作方法,写成用例

  • 可以做到定位元素与脚本的分离

18、怎样去选择一个下拉框中的value=xx的option?

  • select类里面提供的方法:select_by_value(“xxx”)

  • xpath的语法也可以定位到

19、如何在定位元素后高亮元素(以调试为目的)?

-重置元素属性,给定位的元素加背景、边框

20、什么是断言和验证?

断言(assert):测试将会在检查失败时停止,并不运行后续的检查

优点:可以直截了当的看到检查是否通过

缺点:检查失败后,后续检查不会执行,无法收集那些检查结果状态

验证(vertify):将不会终止测试

缺点:你必须做更多的工作来检查测试结果:查看日志——>耗时多,所以更偏向于断言

21、page object设置模式中,是否需要在page里定位的方法中加上断言?

不需要,page页只做元素抓取和操作方法

22、page object设计模式中,如何实现页面的跳转?

初始化driver参数,Page类传driver参数

23、自动化测试用例从哪里来?

-手工用例中抽取

24、你觉得自动化测试最大的缺陷是什么?

-不稳定

-可靠性不强

-不易维护

-成本与收益

25、什么是分层测试?

  • 数据层

  • 接口层’

  • UI层

26、webdriver可以用来做接口测试吗?

不可以,webdriver是专门做web的UI自动化参数

27、get和post 的区别?

  • GET请求:请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。

POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。

  • 传输数据的大小

使用GET请求时,传输数据会受到URL长度的限制。

对于POST,理论上是不会受限制的

  • 安全性。POST的安全性比GET的高

作者:软件测试自动化测试

原文链接:https://blog.csdn.net/ZangKang1/article/details/113885408


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   MySQL数据库作为目前流行的数据库大量应用于PHP、JAVA、Python等Web语言开发项目中,大多数情况下,数据库的操作性能成为整个应用的性能瓶颈。数据库的性能是程序员需要去关注的事情,当设计数据库表结构以及操作数据库(尤其是查询数据时),都需要注意数据操作的性能。  一、优化目标  1、减少 IO 次数  IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。  2、降低 CPU 计算  除了 IO 瓶颈之外,S...
            15 15 1424
            分享
          • 软件测试:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。一、软件的分类1、按照功能划分:【系统软件】:如操作系统、数据库管理系统,各种驱动软件等;【应用软件】:如Office、有道翻译、QQ等;2、按照技术结构划分:【单机版本】:如Office,画图工具等;【C/S结构软件】:如QQ、微信等;【B/S结构软件】:如新浪、搜狐、google等;3、按照使用终端划分:【PC端】:电脑版QQ等安装在电脑端的软件;【移动端】:如手机版QQ、微信等安装在移动端的软件;4、按照用户划分:【产品软件】:Office、财务处理软件、360卫士等;【项目软件...
            1 1 1942
            分享
          •   2021年10月,彭志辉在微博上表示:“我觉得我既不是天才,也已经不是少年了,我只是个很爱折腾的极客。之后还是会继续分享我的一些爱好和创造,我觉得可能‘野生钢铁侠’这个称呼更适合自己。”  近日,华为“天才少年”稚晖君离职的消息受到关注。  12月27日,以“天才少年”身份加入华为的稚晖君(本名彭志辉)被曝离职。他本人在微博证实确实已经离开华为,“接下来我会开启一段新的事业,去做更有挑战的事情…”  据了解,“天才少年”项目是由华为创始人任正非在2019年发起的,用顶级挑战和顶级薪酬吸引顶尖人才的项目。华为给这些“天才少年”们开出高达百万年薪,这让与“天才少年”相关的消息备受社会关注。  ...
            0 0 1295
            分享
          •   在各种各样的公司或岗位上,有着三种人:遵守规则、见识规则、搭建规则的人。  大多数人都处于遵守规则的阶段,也就是执行人员,不论开发、测试等岗位,根据当前的管理体系去熟悉去适应去执行。  小部分人见识过各种各样的规则,这取决于不同公司的规模,为什么大多数公司喜欢大厂背景的人才,就是因为他们见识过完善的制度体系,学习能力快、人员素质高等原因。  最后很少一部分人处于搭建规则,当然搭建规则的人必须有个前提——见识过规则。  每一个公司都有自己的制度流程,从别的地方复制粘贴过来的并不完全能够运行下去,中间会出现各种各样的问题,最后导致断层问题,在不断改进后形成自己的规则体系,使公司更好地运行下去。...
            0 0 1208
            分享
          •   微软游戏部门宣布大规模裁员,共计 1900 人受到波及,其中主要来自微软于去年 10 月以 687 亿美元收购的动视暴雪。虽然有部分 ZeniMax 和 Xbox 部门的员工也受到影响,但裁员主要集中在暴雪内部。  微软 Xbox 游戏工作室负责人 Matt Booty 在给员工的备忘录中表示:“今天的裁员影响了暴雪内部多个团队,包括开发团队、共享服务部门和公司职能部门。作为战略调整的一部分,暴雪将终止其正在开发的生存游戏项目,并将部分参与该项目的员工转移到正在早期开发的几个具有前景的新项目中。”  虽然从未公布过具体名称,但这款 2022 年宣布的未命名的生存游戏仍颇受关注。一方面,它是...
            0 0 818
            分享
      • 51testing软件测试圈微信