• 软件测试工程师面试题


    以下问题答案只可作为参考

    一、写出如下命令:
    1)列出当前目录中名称含有2018的文件夹与文件名称
    find . -name "*2018*"
    1)列出系统名称为test的进程号
    ps -ef|grep test
    3)终止进程号为23000的进程
    kill -9 23000
    二、LoadRunner分为几个模块,请简述各个模块功能
    脚本生成器:录制调试脚本用的。
    场景控制器:用脚本生成场景、执行场景,并在场景执行时进行监控。
    结果分析器:场景结束后将监控的指标整理成图表展现给用户。
    三、在一个软件的生命周期V模型中,测试阶段有哪些
    需求评审-概要设计-详细设计-单元测试-集成测试-系统测试-验收测试。
    四、测试一个输入框的测试用例中验证输入区间,输入内容与提示方案,用到了那些设计方法
    等价类,边界值,错误推断法,场景法
    五、提交一个高质量的bug都需要注意那些内容
    bug版本号,bug状态类型(界面,功能),bug严重程度,bug优先级,bug标题,bug描述,截图,
    六、linux中计划每天0点自动备份测试数据且只保留7天,如何实现
    一、每天23:59分备份lampp
    备份的文件名以当时的时间命令
    201612241852_acces.log
    /tmp/logs/
     
    1、 新建shell脚本:vim beifen.sh
    #!/bin/bash
    for='/opt/lampp/logs/access_log'
    to='/tmp/logs/'
    name=`date +%Y%m%d%H%M`
    cp ${for} ${to}${name}_access_log
    > /opt/lampp/logs/access_log
    2、编辑定时任务:crontab -e
    59 23 * * * sh /root/beifen.sh
    3、查看定时任务:crontab -l
     
     
     
    七、linux中查询实时日志的命令是什么,实时日志查询中查询上午10点至12点的日志命令是什么,列举几个常见的错误
    grep或者sed
    sed -n ‘/2019/05/29/,/2019/05/30/p’ log文件名称
    grep '2019-05-26 18[25-40]' log文件名称
    sed -n '/起始时间/,/结束时间/p' 日志文件
     
     
    八、http接口中get与post请求的核心区别是
    get传输信息在url提交,post传输信息采用报文提交
     
    九、数据库表A中有id/name/age三个字段,那么查询出年级在18-30岁间姓名列表的sql如何写
    select name from A where age >=15 and age <=30
    十、当遇到app频繁crash的情况,你一般如何处理
    抓包查看传输数据:
    一般都是内存管理错误(内存泄露或者内存过低),程序逻辑错误,设备兼容,网络因素
     
    十一、传统测试与敏捷测试的核心区别有哪些
    传统:注重测试范围,每一阶段都需要把测试用例完整执行一遍
    敏捷:注重测试时间与效率,回归测试注重抓住重点测试
    十二、简述SQL注入漏洞产生的原因,如何防止
    设计数据库方法不规范,前段输入sql语句,后端没有校验
    防止:前段校验,后端过滤掉危险的sql关键字

    十三、帮张三买一张回家的火车票  让你设计测试用例

    1.确定需求(回家回哪,需要什么票,买什么时候的票)
    2.开始测试
    2.1 功能测试(我去买票(买火车票,飞机票),买到票(什么时候),回来给你)
    2.2 可靠性测试(我去买票过程中被撞死了,票买不到怎么办,延期了,买那个点的票没了怎么办让我帮他买票的人的身份,比如是否有特殊优待,如军人,1米2以下儿童等,身份证丢了,或者票丢了,责任划分)
    2.3 可维护性测试(票是否可保存完好)
    2.4 兼容性(还不同人的去买,我中间招人去买,我坐车走路)
    2.5 算法测试(我通过不同的渠道买票花费的时间)
    2.6 竞品测试(别的人怎么买的票)
    2.7 安全性测试(身份信息保密)
    2.8 性能测试(一个身份证买多张票,同时多张身份证买多张票)

    十四、

    selenium做自动化的元素定位方法类型。

    1.id,name,class_name元素属性定位。

    2.tag_name元素标签定位。

    3.link_text,partial_link_text为超链接定位(a标签)。

    4.Xpath:为元素路径定位。

    5.为CSS选择器定位。

    十五、说一下你们公司的工作流程,你认为那里有缺陷

    十六、简要说明你平常工作中的亮点

    十七、没有接口文档,如何做接口测试

    1.没有接口文档,那就需要先跟开发沟通,然后整理接口文档(本来是开发写的,没办法,为了唬住面试官,先说自己整理了)
    2.没有接口文档,可以抓包看接口请求参数,然后不懂的跟开发沟通

    十八、在手工测试或者接口测试过程中,上下游接口有数据依赖怎么处理

    在工具中可以使用全局变量等方式将需要的数据进行传送

    十九、如何模拟弱网测试

    fiddler和charles都可以模拟弱网测试,平常说的模拟丢包,也是模拟弱网测试

    fidder抓包工具 里面有个模拟弱网的规则  可根据2g/3g/4g等模拟网络。

    二十、依赖于第三方的接口如何进行测试,请简单描述一下

    可以使用SoapUI等工具直接调用第三方数据接口的webservice,通过返回值来查看第三方数据的接口是否调用正常。 也可以利用一些MOCK的工具来模拟第三方的数据返回,最大限度的降低对第三方数据接口的依赖。

    二十一、请简述一下区块链的测试方法以及测试内容

    二十二、HTTP接口传递数据最常用的方式

    post,get

    二十三、请写一句sql语句从数据库里面随机取50条数据

    1、sql_server数据库

    SELECT TOP 10 * FROM T_USER ORDER BY NEWID()

    2、Oracle数据库

    SELECT * FROM (SELECT * FROM T_USER ORDER BY DBMS_RANDOM.RANDOM()) WHERE RONUM <= 10

    3、mysql数据库

    SELECT * FROM T_USER  ORDER BY  RAND() LIMIT 10

     二十四、接口的加密测试中对称加密与非对称加密有什么区别? 如何开展测试? 请详解

    对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法。 对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。 非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。目前最常用的非对称加密算法是RSA算法. 开展测试-TBD

    二十五、请详细阐述接口测试和UI测试在测试活动中是如何协同测试的

    接口测试和UI测试这两块其实是有一部分是重叠的,UI测试是通过前端写的界面,来调用接口,而接口测试是直接调接口。所以排除前端的处理的逻辑和调用的正确性,在理论上接口测试是可以覆盖所有的UI测试。但实际过程中,如果只是在接口层覆盖所有的业务流,在UI上只测试前端的逻辑,最终的结果可能会是忽视很多原有的功能点,导致了UI测试的不充分。所以存在多人分工且时间充分的时候可以尝试接口去做业务流的全覆盖,否则不要轻易尝试

    二十六、接口测试中依赖登录状态的接口如何测试

    依赖登录状态的接口的本质上是在每次发送请求时需要带上Session或者Cookie才能发送成功,在构建POST请求时添加必要的Session或者Cookie

    二十七、http接口测试和web Service接口测试区别是什么

    区别是有的。主要是传统ws有一套完整的协议标准。其中有soap协议,用来进行消息的传递。以传统工业标准的ws返回数据为例,返回结果需要包装在一个soap协议指定的语法格式中。即使你只需要简单的返回字符1,也需要包装在协议种返回,协议描述了成功失败否,结果值等。而普通的get,你输出1,在调用端得到字符1。 web service和http接口的区别在于: 1.接口中实现的方法和要求参数一目了然。 2.不用担心大小写问题。 3.不用担心中文 urlencode 问题。 4.代码中不用多次声明认证(账号,密码)参数。 5.传递参数可以为数组,对象等

    二十八、设计接口测试用例例时,涉及的是电商系统,其中包括很多修改,如商品、商家、店铺等等,针对这些数据的修改,会涉及到很多参数。如商品的名称,商品的尺码,商品的颜色等等。那在设计实现“修改”接⼝口时,如何确定要传哪些参数?是只需要传我要修改的参数,还是全部参数都要传?

    关键还是看后台逻辑实现。 举例:User有两个属性username,password 后台逻辑实现:update User set username=? where id=xxx; 那,如果你只想更新username的时候,可以不传password,其值是保持不变的。 后台逻辑实现:udpate User set username=?,password=? where id=xxx; 这种情况下,即使你只想更新username,也需要传password的值给后台,不然password就会被更新为空。 此外,还有一些数据如id等,如果sql中没有写,那即使传递了本字段的参数,数据库也不会更新。因此,在写关于“修改”的接口时,需要考虑一下,后台的逻辑是怎么实现的,然后确认要传递哪些参数

    二十九、目前接口文档是由word格式管理理,因迭代快,产生很多文档,分不不清哪些是不用的接口,哪些是正在用的接口,哪些是更新后的接口,文档杂乱,另外因是word格式管理,不方便查询,如何管理?每次查看接口文档需要下载多个word,不能避免下载操作查看,效率不高,如何提高工作效率?

    如果是webservice,使用WSDL的格式来进行查看接口的文档,以前的接口必要的时候使用一些配置管理的工具,比如wiki之类的系统来实时更新现有的接口状态

    三十、做接口测试当请求参数多时tps下降明显,此接口根据参数从redis中获取数据,每个参数与redis交互一次,当一组参数是tps5133,五组参数是tps1169,多次交互影响了处理性能,请详细阐述如何改进增进效果的方案

    将从redis获取数据的get改为mget,减少交互次数

    三十一、

    给出这个界面  你怎么测试

    比如这个输入框,平常拿到这个web页面,会对输入框做用例设计:

    • 输入一个负数(如:-100),点提交
    • 输入金额为0(如:0),点提交
    • 输入金额为0-100的数(如:20),点提交
    • 输入金额为100(如:100),点提交
    • 输入金额大于100(如:108),点提交
    • 输入1位小数(如:10.1),点提交
    • 输入2位小数(如:10.12),点提交
    • 输入3位小数(如:10.123),点提交
    • 采用等价类,边界值的方法。
    • 1.可以发现很多在页面上操作发现不了的bug
      2.检查系统的异常处理能力
      3.检查系统的安全性、稳定性
      4.前端随便变,接口测好了,后端不用变
      5.可以测试并发情况,一个账号,同时(大于2个请求)对最后一个商品下单,或不同账号,对最后一个商品下单
      6.可以修改请求参数,突破前端页面输入限制(如金额)

    三十二、面试题1:你平常做接口测试的过程中发现过哪些bug?

    1.可以用接口工具去直接请求接口,也可以fiddler抓包,抓到接口后修改金额为负数

    2.用postman或者jmeter接口发送

    三十三、怎样判断一个bug是前端的还是后端的。

    平常提bug的时候,前端开发和后端开发总是扯皮,不承认是对方的bug
    这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数据不对
    请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题咯

    三十四、当一个接口出现异常时候,你是如何分析异常的?

    1.抓包,用fiddler工具抓包,或者浏览器上f12,app上的话,那就用fiddler设置代理,去看请求报文和返回报文了
    2.查看后端日志,xhell连上服务器,查看日志

    三十五、平常你是怎么测试接口的?

      • 通过性验证:首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。
      • 参数组合:现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,
        商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。

      • 接口安全:
        1、绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?
        2、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功
        3、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
        4、密码安全规则,密码的复杂程度校验

      • 异常验证:
          所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。

      • 性能测试
        接口并发情况,如上面提到的:一个账号,同时(大于2个请求)对最后一个商品下单,或不同账号,对最后一个商品下单
        接口响应时间,响应时间太长了,肯定需要优化,一般都是毫秒级别

  • 相关阅读:
    HDU 1074 Doing Homework 状态压缩dp
    通过pwnable.kr从零学pwn
    php四个常用类封装
    web安全(入门篇)
    GD库
    php上传文件那些事
    windows内网渗透的一些笔记
    有关linux内网渗透的一些笔记
    Xcode 6以后默认不支持armv7s架构
    关键字搜索后描红
  • 原文地址:https://www.cnblogs.com/byao-8816/p/11023824.html
Copyright © 2020-2023  润新知