美文网首页
测试面试三

测试面试三

作者: 鹿长 | 来源:发表于2022-06-17 16:50 被阅读0次

.grep 与 find 的区别
grep 是查找匹配条件的行,find 是搜索匹配条件的文件。

7、讲述一下你的接口框架、UI框架是怎么样的?

  1. 什么 是PO 模式?
    PO 模式是 page object model 的缩写,顾名思义, 是一种设计模式,把每个页面当成一
    个页面对象,页面层写定位元素方法和页面操作方法,实现脚本的 page 和真实的网站页面 Map
    起来,一一对应起来。这样能测试框架更容易维护。 比如一个登陆页面,使用 PO 模式后,会
    创建一个 LoginPage 的 class,该 class 会定义用户名输入框,密码输入框,登陆按钮的
    webElenent;用例层从页面层调用操作方法,写成用例,这种模式可以做到定位元素与脚本分
    离。所以这样的设计理念就是 PO 模式。

9、Unittest 单元测试模块中的4大模块分为哪些
test fixture:测试之前环境准备和测试之后环境清理的部件。
setupclass 、teardownclass、 setup、 teardown
test case:测试用例
test suite:测试套件,也称为测试集合。多个测试用例组合在一起就形成了测试集
test runner:主要职责为执行测试,通过图形、文本或者返回一些特殊值的方式来呈现
最终的运行结果。例如执行的用例数、成功和失败的用例数。HTMLTestRunner 通过断言来
判断以及生成测试报告

10.怎么提高 selenium 脚本的自动化执行效率?
1.优化测试用例,尽可不使用 sleep,减少使用 ImplicitlyWait
2.多使用 selenium 的 WebDriverWait/FluentWait,这样可以优化等待时间3.减少不必要的操作步骤,如经过三四步才能打开我们要测试的页面的话,我们就可以直接通过
网址来打开,减少不必要的操作。
4.中断页面加载,如果页面加载的内容过多,我们可以查看一下加载慢的原因,如果加载的内容
不影响我们测试,就设置超时时间,中断页面加载。
5.使用性能好的电脑

11.用例在运行过程中经常会出现不稳定的情况,也就是这次可以通过,下次无
法通过了,如何提高用例的稳定性?
1、查找元素前先做判断:ExpectedConditions 里面的各种方法;
2、显式等待:多使用 WebDriverWait,加上显式等待时间,等要操作的元素出现之后再执行
下面的操作;适当的使用 sleep 作为辅助等待。
3、多用 try catch 捕获异常;
4、多线程的时候,减少测试用例耦合度,因为多线程的执行顺序是不受控制的;
5、尽量使用测试专用环境,避免其他类型的测试同时进行,对数据造成干扰。
6、使用重试机制,在失败时重运行。

17、HTTP 和 HTTPS 有什么不同
1、https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。
2、http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl
加密传输协议。
3、http 和 https 使用的是完全不同的连接方式,http 使用 80 端口,https
是 443。
4、http 是简单的无状态的连接;HTTPS 协议是由 SSL+HTTP 协议构建的可进
行加密传输、身份认证的网络协议,比 http 协议安全

18、元素的定位方式
八大元素定位方法:
find_element_by_name
通过元素 name 属性查找
find_element_by_partial_link_text
模糊匹配超链接文本(超链接文本
必须是唯一)
find_element_by_id
通过元素 id
查找
find_element_by_tag_name
tag_name(标签名称)定位
find_element_by_xpath
通过路径查找find_element_by_class_name
class 属性的值定位
find_element_by_link_text
精确匹配超链接文本(超链接文本必须是唯
一)
find_element_by_css_selector
通过 css 选择器定位、

22.我们使用 Selenium 实现自动化测试,主要需要 3 个东西
1.测试脚本,可以是 python,java 编写的脚本程序(也可以叫做 client 端)
2.浏览器驱动, 这个驱动是根据不同的浏览器开发的,不同的浏览器使用不同的 webdriver
驱动程序且需要对应相应的浏览器版本,比如:geckodriver.exe(chrome)
3.浏览器,目前 selenium 支持市面上大多数浏览器,如:火狐,谷歌,IE 等

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

24、元素定位不到的原因
元素属性发生变化,这种情况就会定位不到
页面嵌套,需要用 iframeid,未切换到子页面,就会定位不到
页面未加载完成,或者是需要触发 js 事件才会出现的元素,就会定位不到

  1. 如何设计高质量自动化脚本
  2. 使用 PO 设计模式,将一个页面用到的元素和操作步骤封装在一个页面类中。如果一个元素
    定位发生了改变,我们只用修改这个页面的元素属性。
  3. 对于页面类的方法,我们尽量从客户的正向逻辑去分析,方法中是一个独立场景,例如:登
    录到退出,而且不要想着把所有的步骤都封装在一个方法中。
  4. 测试用例设计中,减少测试用例之间的耦合度,单个用例不能过于复杂。
  5. 在元素定位上要更灵活、要适当结合等待来保证稳定性
  6. 使用分层结构设计,实现业务逻辑、测试脚本、测试数据分离。

26、自动化测试脚本修改频率高吗,每次版本都需要去修改自动化脚本?
自动化脚本目的是用来做主流程的回归测试,或者是前置测试参数的构造,
所以只要主流程稳定,自动化脚本就稳定。

首先:自动化测试不能替代手工测试
我们公司的情况:
新功能都是手工测试
老功能都是自动化测试(这里是指核心流程,非核心业务也没人动)

30、断言做在什么地方,怎么做断言
测试用例执行完成之后进行断言
怎么做断言分情况:
接口自动化:根据接口返回,与预期结果进行对比(预期结果事先计算好的,
或者是直接去数据库查询出来,或者其他方式,总之要保证数据准确性没有问题)
UI 自动化:根据 UI 页面元素返回进行断言,元素是否存在,或者值是否正

41、元素等待方式有几种,分别有什么不同
time.sleep(10)
强制等待 10 秒
driver.implicitly_wait(10) 隐式等待 10 秒
WebDriverWait(driver=self.driver,
timeout=10,poll_frequency=1).until(method=lambda
x :self.find_elements(drivers=x),message='执行失败') 显式等待强制等待:等待时间固定不变,时间结束后执行下一个语句。
隐式等待:隐式等待会在 WebDriver 对象实例的整个生命周期起作用,它不
针对某一个元素,是全局元素等待,即在定位元素时,需要等待页面全部元素加
载完成,才会执行下一个语句。如果超出了设置时间的则抛出异常
显式等待(很多用法常用的是与 util 结合使用):timeou 时间内会不断调
method 查询元素,调用间隔通过 poll_frequency=0.5 设置,等待的元素出现执 行下一步,超时抛出异常。

42、三方接口,第三方出现问题了,你们怎么处理
第三方接口出了问题,首先排查出现问题的原因,是我方导致还是第三方导
致。根据排查结果做对接流程和对接测试流程优化。
如果是第三方修改了接口上线了,我方不知道,导致的 bug,这个时候需要
变更对接流程,约定版本上线以及变更能及时通知我方,进行联调测试。
如果是我方的问题,优化测试流程,增加测试范围和交叉测试环节,防止漏
测。

29.查磁盘信息
df-h

30.查看可用内存
free-m

37.查看系统正在运行的tomocat进程
语法:ps-ef|grep指定的进程名
查询 tomcat进行信息,如果有信息返回,
Ps - ef | grep tomcat

1、什么是死锁?
所谓死锁,是指多个进程或线程在运行过程中因争夺资源而造成的一种僵局,当处于这种僵
持状态时,若无外力作用,它们都将无法再向前推进

2.死锁产生的 4 个必要条件?
产生死锁的必要条件:
互斥条件:进程或线程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一
进程或线程所占用。
请求和保持条件:当进程或线程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程或线程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己
释放。
环路等待条件:在发生死锁时,必然存在一个进程或线程--资源的环形链。

3.解决死锁的基本方法
预防死锁:
资源一次性分配:一次性分配所有资源,这样就不会再有请求了:(破坏请求条件)
只要有一个资源得不到分配,也不给这个进程或线程分配其他的资源:(破坏请保持条件)
可剥夺资源:即当某进程或线程获得了部分资源,但得不到其它资源,则释放已占有的资源
(破坏不可剥夺条件)
资源有序分配法:系统给每类资源赋予一个编号,每一个进程或线程按编号递增的顺序请求
资源,释放则相反(破坏环路等待条件)

负载测试和压力测试的区别?
负载:是指对系统不断地增加压力或增加一定压力下的持续时间,直
到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等

压力:是指超过安全负载的情况下,对系统不断施加压力,是通过确
定一个系统的瓶颈或不能接收用户请求的性能点,来获得系统能提供的最大服务级别的测试
负载测试和压力测试的区别?
负载:是指对系统不断地增加压力或增加一定压力下的持续时间,直
到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等

压力:是指超过安全负载的情况下,对系统不断施加压力,是通过确
定一个系统的瓶颈或不能接收用户请求的性能点,来获得系统能提供的最大服务级别的测试

您以往是否曾经从事过性能测试工作?如果有,请尽可能的详细描述您以往 的性能测试工作的完整过程。
测试工作的完整过程:
性能测试类型包括负载测试,强度测试,容量测试等
负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。
强度测试: 强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情

容量测试:确定系统可处理同时在线的最大用户数
在网站流量逐渐加大的情况下,开始考虑做性能测试了,首先要写好性能测试计划,根
据运营数据得出流量最大的页面(如果是第一次的话,一般是首页,下载页,个人帐户
页流量最大,而且以某种百分比),
Web服务器指标:
*AvgRps:平均每秒钟响应次数=总请求时间 /秒数;
5152
*SuccessfulRounds:成功的请求;
*FailedRounds:失败的请求;
*SuccessfulHits:成功的点击次数;
*FailedHits:失败的点击次数;
*HitsPerSecond:每秒点击次数;
*SuccessfulHitsPerSecond:每秒成功的点击次数;
*FailedHitsPerSecond:每秒失败的点击次数;
*AttemptedConnections:尝试链接数;

43、Jmeter的断言怎么做?
选中需要断言的请求,右键,选择响应断言,在响应断言输入框中添加要断言的值;如果这个接口有多个请求数据,针对每个请求数据服务器返回数据都不一样的,这时候,我们
就要把断言的值进行参数化,步骤是:现在本地添加一个 txt文档,把参数化的值写入文档
里面,然后再在 jmeter选中需要断言的请求,右键,添加 CSV文件设置,把刚才编辑好的
txt文档添加进来,在响应断言输入框中使用${字段名}的方式来引用参数的值

46、怎么定位性能瓶颈,比如线程组是 10 的时候,TPS 是 60,线程组是 20 的时候,TPS 还是 60,怎么去定位问题
10 个线程的时候事物处理能力是 60,20 个线程的时候事务处理能力是 60,
根据当前数据暂时无法判断是否存在性能问题,因为并不能证明 60 就是该服务
器的最大事物处理能力,还需要进行其他的测试来确定服务器最大事物处理能力
峰值。
建议增加测试场景如下:
场景一、超过 20 个线程场景,记录 TPS 值
场景二、10-20 之间线程场景下,记录 TPS 值
当某个场景得到的结果 TPS 到最大值后,随着线程数增加 TPS 值变小,这就
说明这个最大是就是该机器的最大 TPS。最终通过其他指标去寻找系统瓶颈即可。

性能调优有哪些方面?
数据库:不需要修改程序风险小,时间比例大的调优,效果显著。时间比例小的,效果不显著,代价大。 数据库的索引,线程,内存资源,
数据库的分析原则是先索引,后存储过程,最后表结构视图的优化,索引的优化是最简单也是通常最有效的方法

程序:哪个函数执行过多引起了性能下降,比如异常过多,某个循环过多,或是DCOM调用过多等等

内存:一般是一个长期分析的过程,要做好不容易,首先要有长期奋战的准备,其次内存泄漏的分析最好是放在单元测试之中同步进行,而不是要等到最后再去发现问题

配置:

相关文章

  • 测试面试三

    .grep 与 find 的区别grep 是查找匹配条件的行,find 是搜索匹配条件的文件。 7、讲述一下你的接...

  • 面试题汇总1

    银行软件测试面试问题 软件测试经典面试题 软件测试面试题汇总 测试技术面试题 1、什么是兼容性测试?兼容性测试侧重...

  • 汉语教师志愿者回忆经验

    面试总共分三部分:心理测试、综合测试、英语面试。 心理测试 心理测试是机考题,总共有三十八组题,用45分钟完成。主...

  • 如何有利的应对面试

    面试常见的问题,可以分为以下几种,一、启发式面试,二、压力式面试,三、计划式面试,四、能力测试,五、行为描述式面试...

  • 关于面试的感触

    谈到面试,我的感触是挺大的,决定入这个圈子也是因为面试。下面来说说我的经历,做了三年多的测试,从普通测试做到测试主...

  • 经典测试工程师面试题(一)

    经典测试工程师面试题(二)经典测试工程师面试题(三) 背景 为了扩展家里领导的测试知识水平和专业知识能力提升,以及...

  • 面试宝典:性能测试经典面试题(四)

    性能测试面试题及答案,上一期我们公布了性能测试经典面试题的第三部分,本期我们继续更新性能测试经典面试题的第四部分。...

  • 面试题

    selenium面试题自动化测试面试题测试理论基础DevOps面试问题总结1

  • 测试面试题三

    查看当前使用的是哪个数据库mysql> select database();另外,在下面2个语句的输出里也能看出当...

  • 软件测试面试题

    最近进行了几次面试,发现一个问题。面试的同学很多都准备不足,在明知道是面试软件测试岗位的时候,对软件测试理论,测试...

网友评论

      本文标题:测试面试三

      本文链接:https://www.haomeiwen.com/subject/zmqhvrtx.html