软件测试面试问题及答案_中软国际测试面试笔试题

软件测试面试问题及答案_中软国际测试面试笔试题文章目录软测面试题附答案<二>二、接口面试题1、你们公司的接口测试流程是怎样的?2、接口测试里面如何分析一个bug是前端还是后端的?3、Jmeter参数化的方式有哪几种可以实现4、在接口测试中关联是什么含义?一般什么场景需要用到,postman中是怎样用的?5、常用的性能指标名称与具体含义?6、没有接口和文档怎么进行工作?三、自动化面试题1、Selenium中有哪几种元素定位方式?2、隐式等待与显式等待有什么不同?3、自动化测试里面遇到验证码,一般怎么处理比较好?四、安全1、什么是SQL注入攻击

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

软测面试题附答案<二>

上一篇链接:软测面试题附答案<一>,主要内容为常规软测面试题。
下一篇链接:软测面试题附答案<三>,主要内容为测开相关面试题

二、接口面试题

1、你们公司的接口测试流程是怎样的?

  • 熟悉业务需求和测试要点(需求文档、接口文档)
  • 从开发处拿到API接口文档,了解接口业务、协议和token鉴权,返回格式等信息
  • 使用Postman或Jmeter工具执行接口测试
    • 如果产品比较稳定,会编写自动化测试脚本进行自动化测试
  • 编写接口测试报告

2、接口测试里面如何分析一个bug是前端还是后端的?

  • 前后端分离的项目
    • 抓包看看请求响应,对照接口文档协议,看是否符合要求,如果报文没问题,那就是前端问题
    • 如果返回的数据不对,或者协议不同,则是后端问题
  • 前后端一体的项目,这个需要前端和后端一起排查。

3、Jmeter参数化的方式有哪几种可以实现

  • 配置文件—用户定义的变量原件可以设置全局变量
  • 函数助手对话框中可以选择比如随机字符串、随机日期。随机数字作为参数化
  • 可以使用CSV文件作为参数化,通过配置文件中的csv data set config元件进行设置即可
  • beanshell进行二次开发读取

4、在接口测试中关联是什么含义?一般什么场景需要用到,postman中是怎样用的?

  • 关联就是把上一个接口返回值的奔放截取出来,作为下一个接口的参数,能让串口串联运行
  • 比如电商里面的取消收藏功能,需要从收藏列表获取某个商品记录id,并获取登录鉴权token,然后请求取消收藏接口
  • 在postman中设置管理的步骤如下:
    • 先通过正则表达式提取的方式或json取值的方式把下一个接口需要的信息从上一个接口截取出来
    • 使用设置全局变量的代码把取出来的值保存到全局变量
    • 在下一个接口中,使用{
      {全局变量}}代替要替换的静态值

5、常用的性能指标名称与具体含义?

  • 响应时间、并发用户数、吞吐量、性能计数器、TPS
    • 响应时间:指的是”系统响应时间”,定义为应用系统从发出请求开始到客户端接收到响应所消耗的时间。把它作为用户视角的软件性能的主要体现
    • 最大并发用户数:
      • 从业务的角度来模拟真实的用户访问,体现的是业务并发用户数,指在同一时间内访问系统的用户数量。
      • 从服务器端承受的压力来考虑,这里的”并发用户数”指的是同时向服务器端发出请求的客户数,一般结合并发测试使用,体现得到是服务器端承受的最大并发访问数。
    • 吞吐量:指”单位时间内系统处理的客户请求的数量”,直接体现软件系统的性能承载能力
    • 性能计数器:是描述服务器或操作系统性能的一些数据指标。例如,对Windows系统来说,使用内存数(Memory In Usage),进程时间(Total Process Time)等都是常见的计数器
    • TPS:每秒系统能够处理的交易或事务的数量。他是衡量系统处理能力的重要指标。

6、没有接口和文档怎么进行工作?

  • 公司里多数是前后端分离,项目启动后,开发人员应该先定义接口文档,测试人员应该尽早拿到接口文档进行编写测试用例。
  • 没文档情况:
    • 找上司或者对应的开发人员获取,确实没有,就抓包
      • 如果是后端返页面和数据,不是前后端分离的,则没法做接口测试
      • app:通过代理抓包
    • 如果里面参数涉及复杂的加密逻辑且开发人员不能协助,基本没戏

三、自动化面试题

1、Selenium中有哪几种元素定位方式?

八大定位方法,在之前的文章中也有详细讲到:Selenium备忘录

1id: find_element_by_id() 采用id属性进行定位
2、name: find_element_by_name() 定位方式和id定位相似,id、name和class一般在网页都至少会
有其中的一种
3class name: find_element_by_class_name() 定位方式和id定位相似,id、name和class一
般在网页都至少会有其中的一种
4、tag name:find_element_by_tag_name() 通过标签名去定位,用的少,如
find_element_by_tag_name("div")
5、link text: find_element_by_link_text() 超链接内容定位
6、partial link text:find_element_by_partial_link_text() 超链接内容定位,模糊匹配
7、xpath:类似xml格式进行选择元素
8、css selector:根据CSS属性定位,一般class是用.标记,id是用#标记,定位方式也会比xpath快

2、隐式等待与显式等待有什么不同?

  • sleep():强制等待,设置固定休眠时间。后脚本的执行过程中执行 sleep()后线程休眠,而另外两种线程不休眠。
  • implicitly_wait():隐式等待,是设置的全局等待。设置等待时间,是对页面中的所有元素设置加载时间,如果超出了设置时间则抛出异常。隐式等待可以理解成在规定的时间范围内,浏览器在不停的扫描页面,直到找到相关元素或者时间结束。
  • WebDriverWait():显式等待,是针对于某个特定的元素设置的等待时间,在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException

3、自动化测试里面遇到验证码,一般怎么处理比较好?

  • 激活成功教程验证码
    • OCR识别:tesseract-orc
    • AI机器学习
  • 绕过
    • 让开发人员临时关闭验证码
    • 提供一个万能的验证码
    • 使用cookie(登录主要是为了拿cookie,获取登录凭证)

四、安全

1、什么是SQL注入攻击,如何避免

SQL注入是一种注入攻击,可以执行恶意SQL语句,它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。

  • 如何防止SQL注入攻击?
    • 不要使用动态SQL
    • 避免将用户提供的输入直接放入SQL语句中;最好使用准备好的语句和参数化查询,这样更安全。
    • 不要将敏感数据保留在纯文本中
    • 加密存储在数据库中的私有/机密数据;这样可以提供了另一级保护,以防攻击者成功的排出敏感数据。
    • 限制数据库权限和特权
    • 将数据库用户的功能设置为最低要求;这将限制攻击者在设法获取访问权限时可以执行的操作。
    • 避免直接向用户显示数据库错误。

2、有没做过安全测试?什么是XSS攻击?

  • 安全测试:在任何软件(Web或基于网络)的应用程序中找到漏洞,并保护其数据免受可能的攻击或入侵者
  • 什么是XSS攻击
    • XSS或跨站点脚本是黑客用来攻击web应用程序的漏洞类型。他允许黑客将HTML或JAVASCRIPT代码注入网页,网页可以从cookie中窃取机密信息并返回给黑客。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187987.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL数据库:常见经典SQL语句

    MySQL数据库:常见经典SQL语句

    2021年10月4日
    52
  • 物联网流量卡骗局_纯流量卡骗局

    物联网流量卡骗局_纯流量卡骗局冰河用多线程优化了亿级流量电商业务下的海量数据校对系统,性能直接提升了200%,这次将整个优化过程分享给大家,全程干货,建议收藏!!

    2022年8月22日
    4
  • tomcat java_maven和java有什么区别

    tomcat java_maven和java有什么区别缓存什么是缓存[Cache]存在内存中的临时数据将用户经常查询的数据放在缓存(内存)中,用户去查询数据的时候就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。为什么使用缓存减少和数据库的数据交换次数,较少系统开销,提高系统效率什么样的数据库能使用缓存经常查询并且不经常改变的数据Mybatis缓存MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制。默认情况下,只启用了本地的会话缓存,它仅

    2022年8月9日
    1
  • cocos2d JS-(JavaScript) 函数类型相互转换(字符串、整形、浮点形、布尔值)

    cocos2d JS-(JavaScript) 函数类型相互转换(字符串、整形、浮点形、布尔值)

    2022年3月5日
    35
  • ubuntu设置远程桌面_ubuntu安装虚拟显示器

    ubuntu设置远程桌面_ubuntu安装虚拟显示器IP变化的所以用向日葵连接,设置开机自动启动如果ubuntu还没有安装桌面那么先安装桌面在安装过程中选择lightdm,如图所示:如果本来就有图形桌面那么需要安装虚拟显示器因为如果将HDMI或者其他与物理显示器相连的线拔掉,即想节省一块显示器,那么就会发现,向日葵虽然可以远程连接到桌面,但是却控制不了,因此需要虚拟显示器。确保ssh可以远程连接后再往下进行。安装虚拟桌面:然后配置虚拟显示器,创建这个文件【/usr/share/X11/xorg.conf.d/xorg.conf】内容如下:

    2022年8月21日
    3
  • java JSON使用之JSONObject、JSONArray与Object的转换

    java JSON使用之JSONObject、JSONArray与Object的转换1、将java对象转换成json字符串:     Personp1=newPerson();     p1.setName(“xxx”);     p1.setAge(18);     StringjsonStr=JSONObject.fromObject(p1).toString();2、将

    2022年5月31日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号