美文网首页
测试面试三

测试面试三

作者: 鹿长 | 来源:发表于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调用过多等等

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

    配置:

    相关文章

      网友评论

          本文标题:测试面试三

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