大家好,又见面了,我是你们的朋友全栈君。
文章目录
- 软测面试题附答案<二>
- 二、接口面试题
- 1、你们公司的接口测试流程是怎样的?
- 2、接口测试里面如何分析一个bug是前端还是后端的?
- 3、Jmeter参数化的方式有哪几种可以实现
- 4、在接口测试中关联是什么含义?一般什么场景需要用到,postman中是怎样用的?
- 5、常用的性能指标名称与具体含义?
- 6、没有接口和文档怎么进行工作?
- 三、自动化面试题
- 1、Selenium中有哪几种元素定位方式?
- 2、隐式等待与显式等待有什么不同?
- 3、自动化测试里面遇到验证码,一般怎么处理比较好?
- 四、安全
- 1、什么是SQL注入攻击,如何避免
- 2、有没做过安全测试?什么是XSS攻击?
- 二、接口面试题
软测面试题附答案<二>
上一篇链接:软测面试题附答案<一>,主要内容为常规软测面试题。 下一篇链接:软测面试题附答案<三>,主要内容为测开相关面试题
二、接口面试题
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备忘录
代码语言:javascript复制1、id: find_element_by_id() 采用id属性进行定位
2、name: find_element_by_name() 定位方式和id定位相似,id、name和class一般在网页都至少会
有其中的一种
3、class 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.cn/187987.html原文链接:https://javaforall.cn