一、测试时接口调不通,如何去排查
1、接口没有任何响应
很多时候在做接口测试时,会发现接口没有任何返回,比如浏览器一直在转圈,或者返回一个空白页面。用接口工具测试时,工具报错,提示“no response”。
排查思路
- 先检查接口 ip 是否正确,可以通过在本机 ping 接口的 ip,检查网络是否通畅
- 再检查接口的端口号是否正确,可以通过在本机 telnet 接口的 ip 和端口号,检查端口是否能连通
- 检查项目是否启动或者部署成功,可以找研发确认,或者自己登录到服务器上,通过 ps 命令检查项目的进程是否存在,然后用 tail 命令查看部署日志
- 检查服务器防火墙是否关闭,如果因为安全或者权限问题不能关闭,需要找运维进行策略配置,开放对应的 ip 和端口号
- 检查你的客户端(浏览器/测试工具),是否设置了网络代理,网络代理可能会造成请求失败
- 检查操作系统的 host 文件,是否绑定了一个错误的 ip 映射
2、接口有响应但是返回了错误的状态码
有些时候接口会返回一些错误的 HTTP 状态码,需要根据不同的状态码来确定具体的原因。
排查思路
400:客户端请求错误,比如请求参数格式错误(如 json 字符串不合法)
401:未授权,比如在请求 header 里,缺乏必要的信息头(如 token、auth 等字段)
403:禁止,常见的原因是用户的账号没有对应的 url 权限,还有就是项目所用的中间件,不允许远程访问(比如 Apache)
404:资源未找到,导致这种情况的原因很多,比如:
- url 写错了
- url 后有空格
- 项目没有启动成功
- 请求协议不对,如 http/https
405:方法不允许,常见的原因是请求方式不正确,比如 GET 类型接口,使用 POST 方式去请求
415:不支持的媒体类型,常见原因是请求数据的类型和服务端支持的类型不匹配,比如 json 接口,需要添加一个信息头 Content-type:application/json
500:服务器内部错误,出现这种情况,说明服务端内部报错了,需要登录到服务器上,检查错误日志,根据具体的提示信息再进行排查
502/503/504(Bad Gateway/错误的网关、Service Unavailable/服务无法获得、Gateway Timeout/网关超时)
- 如果单次调用接口就报该错误,说明是后端服务器配置有问题,或者服务不可用,挂掉了
- 如果并发压测时出现此错误,说明是后端压力太大,出现异常,此问题一般是后端出现了响应时间过长或者无响应造成的
二、Fiddler在工作中有哪些应用
fiddler 是一款非常优秀的调试代理工具,用于记录客户端和服务端之间的所有的通信数据。软件测试工作中,主要可以帮助我们来完成以下事情:1、定位前后端Bug
当我们操作页面端发现一个 bug 时,对业务充分熟悉且有足够经验的测试工程师可以直接判断是否前后端 bug;但无经验的不要慌,可通过 fiddler 抓取 request、response 数据,分析定位前后端 bug。 1)查看请求的 http 状态码是否正确。 例:若抓取到的请求返回的 http 状态码为 404,说明可能是前端 JS 提交了错误的地址,也可能是后端服务器没有对应地址的服务; 若抓取到的请求返回的 http 状态码为 500,说明是后端服务器内部错误。 2)查看请求的 http 状态码 200 但界面提示报错,则具体分析 request 及 response 信息,确认是否前端请求传参错误,若前端对应请求地址及传参都正确,则确认后端问题。2、篡改数据
1)断点篡改请求数据 当我们在测试的时候,仅仅通过页面来发起请求进行测试,会因为前端的一些输入限制,导致测试不能覆盖所有场景。 比如微信发送红包金额前端限制 0.01-200 元,那我们测试的时候,通过抓包,需要修改请求红包金额超过200,验证服务器端是否正常处理超出数据 还比如我们很多项目都会涉及到支付功能,假设购买 1 件商品,在提交订单后、跳转到支付窗口之前,通过抓包能抓取到支付金额及数量的请求信息,并去篡改了支付金额或数量,然后以超低价格购买到多数量的高额商品。那就是严重 bug 了! 以上这些可以通过 fiddler 打断点,来修改请求数据 步骤:- 设置 Rules—>Automatic Breakpoints—>Before Request
- 然后在界面点击提交订单,看到请求前有红色禁行标识,说明设置了断点,请求被拦截了;
- 点击该请求,在右侧 WebForms 视图下会看到请求发送的具体内容,修改金额后,再点击 Run to Completion 按钮。这样就完成了数据的篡改。
那么在涉及到支付等重要场景时可利用这种方法来完成服务器安全性校验。一般我们可以要求开发在数据包中不要加入价格等敏感数据。
2)断点篡改响应数据 如果系统调用到第三方接口,根据第三方接口的不同返回结果进行不同的逻辑处理,当提供方不能配合我们来测试时;或者我们要从数据库获取不同的数据在前端做展示; 就都可以利用 fiddler 来篡改接口返回的数据,模拟我们需要的测试场景。 步骤:
- 设置 Rules—>Automatic Breakpoints—>After Responses
- 页面发起请求,看见对应的请求图标有红色禁行标识,表示响应过程已设置断点
- 修改响应数据,点击 Run to Completion 按钮。例如图示,修改省份选择框的省份过长,查看前端展示
断点设置除了以上这种方法外,补充另外 2 种断点设置方式:
1) 输入命令进行断点
bpu :bpurl 的缩写。在命令输入框内输入:bpu 请求的 URL, 然后回车 , 则符合 url 条件的请求就会被中断。 bpm : 相当于 bpmethod。在命令输入框输入:bpm 请求方法,然后回车,则符合请求方法的请求就会被中断 。 bps : bpstatus 的缩写。在命令输入框输入:bps 响应状态码,然后回车,则符合状态码条件的请求就会被中断 。 bpafter :中断修改响应数据 。在命令输入框输入:bpafter url,然后回车,符合条件的 url 就会被中断。
2) 点击左下角的一个小区域设置断点 。点一下是设置请求的断点,点两下是设置响应的断点。
3)通过 AutoResponder 修改响应
这是另外一种断点之外的修改响应数据的方式。在本地文件中配置你想要的的返回结果,请求特定接口时返回你自己配置的资源。例如下面网页请求的 logo 图片,篡改返回的这个 logo 文件为本地指定的一个文件
步骤:
重新再请求页面,logo 已显示指定到的文件。
3、弱网模拟测试
1)Fiddler 中 Rules—>Cutomize Rules 打开 CustomRules.js 文档,搜索关键字 m_SimulateModem,找到如下文档位置oSession[“request-trickle-delay”] = “300”; 看注释:上传 1KB 需要 300ms;转化上传速度:1Kb/0.3s = 3.3(KB/s)。oSession[“response-trickle-delay”]同理
弱网场景例如 2G 网络,2G 上行/下行速率约为 2.7、9.6kbps。每 1KB 数据,uploaded 约 2962 ms,downloaded 约 833 ms。则按如下设置并保存,模拟 2G 弱网情况
2)Rules->Performance-> 点击 Simulate Modem Speeds,开启弱网模拟。对比弱网设置前后,查看统计数据,可以看到弱网设置后,访问网站慢了很多。
另:若想取消弱网设置,选中 Rules->Performance-> 点击 Simulate Modem Speeds,取消勾选即可。
4、获取前端性能数据
1)批量选择第一个请求和最后一个请求,使用 Statistics 页签,可获得整个页面加载所消耗的总体时间。从饼状图中可以清楚哪些请求耗时最多。2)通过 Timeline 分析资源加载时序图,可以看到页面上各个资源加载过程所需要的时间和先后顺序,有利于找出加载过程中比较耗时的文件资源。
以上可以帮助我们清楚耗时比较长的请求及文件资源,过长的可以提交给前端开发,针对性地进行性能优化。
三、HTTP和HTTPS的区别
http: 超文本传输协议,信息是明文传输,端口是80https:端口是443,在应用层
是由Http+SSL协议构建的可进行加密传输、身份认证的网络协议,比http协议安全;
需要到CA(Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用;
四、什么是Http无状态协议?怎么解决?
1)无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。
我们给服务器发送 HTTP 请求之后,服务器根据请求给我们发送数据过来,但是,发送完,不会记录任何信息。
2)特点:
HTTP 是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive 没能改变这个结果。
缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
另一方面,在服务器不需要先前信息时它的应答就较快。
HTTP 协议这种特性有优点也有缺点,优点在于解放了服务器,每一次请求“点到为止”不会造成不必要连接占用,缺点在于每次请求会传输大量重复的内容信息。
3)解决方案:
客户端与服务器进行动态交互的 Web 应用程序出现之后,HTTP 无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。
于是,两种用于保持 HTTP 连接状态的技术就应运而生了,一个是 Cookie,而另一个则是 Session。
五、请简述一下 cookie、session 以及 token 的区别?
1)cookie不安全,数据存放在客户的浏览器上,别人可以分析存在本地的 cookie 并进行 cookie 欺骗
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
2)session 数据放在服务器上,session会在一定时间内保存在服务器上。当访问增多,会比较占用服务器的性能,考虑到减轻服务器性能方面应当使用cookie
可以将登陆信息等重要信息存放为session;其他信息需要保存,可以放在cookie
3)token 是接口测试时的鉴权码,一般情况下登陆后才可以获取到 token,然后在每次请求接口时需要带上 token 参数
六、Https下各个请求方法的区别
联系:都是向服务器提交数据,并且从服务器获取数据
区别:
1)传送方式:Get通Url地址栏传输,Post通过报文传输
2)传送长度:Get参数有长度限制(受限于Url长度),而Post无限制
3) GET产生一个TCP数据包(对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据),
POST产生两个TCP数据包(对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok返回数据)
4) Get请求参数会被完整保留在浏览历史记录里,而Post中的参数不会被保留
5) 在做数据查询时,建议用GET方式;而在做数据添加、修改或删除时,建议用Post方式
Patch:方法用来更新局部资源
假设有一个UserInfo,里面有userId, userName, userGender等10个字段。可编辑功能因为需求,在某个特别的页面里只能修改userName。通常把一个包含了修改后userName的完整
UserInfo对象传给后端,做完整更新,这种做法会浪费宽带。于是Patch
诞生,只传一个userName
到指定资源去,表示该请求是一个局部更新,后端仅更新接收到的字段。
Put:
虽然也是更新资源,但要求前端提供的一定是一个完整的资源对象,理论上说如果用了put
,但却没有提供完整的UserInfo
,那么缺了的那些字段应该被清空。
如果后端程序没有按照标准对两个方法做不同的处理,在程序里把方法名从put
改成patchm没有任何影响。
PATCH 与 PUT 属性上的一个重要区别还在于:PUT 是幂等的,而 PATCH 不是幂等(幂等:特点是 其任意多次执行所产生的影响均与一次执行的影响相同)的。
Post:不是幂等的,若反复执行多次对应的每一次都会创建一个新资源。如果请求超时,则需要回答这一问题:资源是否已经在服务端创建了?能否再重试一次或检查资源列表?而对于幂等方法不存在这一个问题,我们可以放心地多次请求。
七、Post常见的数据提交方式
主要有四种方式:application/x-www-form-urlencoded、multipart/form-data、application/json、text/xml等
八、Python 的 requests 包是干什么的?如何使用 ?
requests 是一个 HTTP 库,作用是发送 HTTP 请求,获得响应,往往使用在网络爬虫,接口自动化测试中。
1)安装 Python
2)安装 requests 模块
3)创建.py 文件
4)导入 requests 模块
5)编写 Python 代码
6)调用 requests 方法
九、常用协议的端口号?
1)21/tcp FTP 文件传输协议
2)22/tcp SSH 安全登录、文件传送(SCP)和端口重定向
3)23/tcp Telnet 不安全的文本传送
4)25/tcp SMTP Simple Mail Transfer Protocol(E-mail)
5)69/udp TFTP Trivial File Transfer Protocol(微型文件传输协议)
6)80/tcp HTTP 超文本传送协议(WWW)
7)110/tcp POP3 Post Office Protocol(E-mail)
8)443/tcp HTTPS used for securely transferring web pages
9)3389/tcp 远程访问 5631/tcp
10)5632/udp pcanywhere 端口号
11)1433 SqlServer 服务端口号
12)1521 Oracle 服务端口号
13)3306 Mysql 服务端口号
14)8080 Tomcat 默认服务端口号
十、常见的状态码有哪些?
1XX --- 信息提示(表示临时的响应。客户端在收到常规响应之前,准备接收一个或多个1xx响应)
2XX --- 成功(表明服务器成功地接受了客户端请求)
3XX --- 重定向(客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求)
4XX --- 客户端错误(发送错误,客户端有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份证验证信息)
5XX --- 服务器错误(服务器由于遇到错误而不能完成该请求)
常见的返回码有:
200 OK - [GET]:服务器成功返回用户请求的数据
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功
202 Aceepted - []:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作
401 Unauthorized -[] :表示用户没有权限(令牌、用户名、密码错误)
403 Forbidden -[] :表示用户得到授权(与401错误相对),但是访问被禁止
404 NOT FOUND -[]:用户发出的请求针对得到是不存在的记录,服务器没有进行操作,该操作是幂等的
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功
十一、抓包工具用过哪些?为什么进行抓包测试?
抓包工具:Fiddler、Charles 、Wireshark
1)有些时候公司没有标准的接口文档,测试人员只能抓包来获取接口信息。
2)抓包可以迅速找到请求,通过抓包可以查看整个请求过程,以及响应过程,可以通过抓包来分辨前台还是后台 bug。
3)通过抓包,可以查看是否有敏感信息泄露,比如用户密码和个人账号信息等数据。
4)通过抓包进行测试,拦截请求,修改请求数据,查看对应响应结果,抓包本身就是接口测试的一部分。
十二、接口组成、接口测试用例包含哪些内容?如何设计?
接口组成:接口访问的地址、请求的方法、参数、返回值
1)接口访问的地址 协议://IP 地址或域名:端口号/应用名/功能名
2)请求的方法 get、post 等
3)参数 用户使用接口时,需要向接口提供的数据
4)返回值 接口给用户的反馈结果
包括:用例名称、接口地址、请求方式、前置条件、描述、请求头部、请求参数、状态码、预期返回结果
1)可用性验证:
接口功能是否正确实现:根据约定的协议、方法、格式内容,传输数据到接口经处理后返回期望的结果;
2)参数值:
是否携带默认值参数
参数是否必填
参数之间是否存在关联
参数数据类型限制
参数数据类型自身的数据范围值限制
3)错误和异常验证:所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。
a.鉴权码 token 异常(为空、没有、错误、过期)
b.输入异常值(空值、特殊字符、超过约定长度等、错误传输数据格式(如json格式写成form格式)),接口能正确处理,且按预期响应
c.错误码异常覆盖 (输入错误的参数,接口能正确处理,并按预期响应;)
4)返回值验证:
返回值除了内容要正确,类型也要正确,保证调用方能够正确地解析;
5)安全性验证:主要指传输数据的安全性
绕过验证,比如说购买了一个商品,它的价格是 300 元,那我在提交订单时候,我把这个商品的价格改成 3 元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?
绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功。
参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。密码安全规则,密码的复杂程度校验。返回数据是否含有敏感数据,如用户密码、完整的用户银行账号信息等;
接口是否防止恶意请求(如大量伪造请求接口致使服务器崩溃);
6)性能验证:如接口的响应时间、并发处理能力、压测处理情况
并发请求相同的接口(特别为POST请求),接口的处理情况(如插入了相同的记录导致数据出错,引发系统故障);
接口响应时长在用户可忍受的范围内;
对于请求量大的接口做压测,确定最大的瓶颈点是否满足当前业务需要
十三、做接口测试运用过哪些测试工具?
http协议的接口测试:Postman、Fiddler、JMeter
Webservice协议接口测试:SoapUI、JMeter
十四、你们公司的接口测试流程是怎样的?
1)获取接口规范:从开发处取得接口文档,了解接口业务,主要包括接口地址、请求方式、入参、出参、返回格式等信息。
2)设计接口测试功能用例:主要从用户角度出发看接口能否实现业务需求
3)各种入参验证:正常情况、异常情况(包括输入参数个数不对、类型不对、可选/必选、还有考虑参数有互斥或关联的情况)
4)接口返回值各种验证:符合接口文档需求
5)采用工具或者自写代码来验证:比如,使用 Jmeter 进行接口测试
6)最后调用并执行测试用例,编写测试报告。
十五、接口测试执行中对比数据库吗
肯定要对比,因为接口返回值的数据来源于数据库,接口对数据的操作还要进行深层次的数据库检查。
十六、对 Http 请求跟 Webservice 请求的了解
1)http api 接口:是走 http 协议,通过路径来区分调用的方法,请求报文都是 key-value 形式的,返回报文一般都是 json 串,有 get 和 post 等方法,这也是最常用的两种请求方式。可以使用的工具有 postman、RESTClient、jmeter、loadrunner 等。
2)webservice 接口:是走 soap 协议通过 http 传输,请求报文和返回报文都是 xml 格式的,都是通过工具才能进行调用与测试。可以使用的工具有 SoapUI、jmeter、loadrunner 等。
十七、接口测试中的关联,如何使用 Postman 设置关联?
关联就是把上一个接口返回值的部分截取出来,作为下一个接口的参数,能让接口串联运行。
在 Postman 中设置关联的步骤如下:
1)通过正则表达式提取的方式或 json 取值的方式把下一个接口需要的信息从上一个接口截取出来。
2)使用设置全局变量的代码把取出来的值保存到全局变量里。
3)在下一个接口中,使用(全局变量)代替要替换的静态值。
十八、接口自动化测试框架一般分为几层?
自动化测试框架一般分为 5 层:配置层,脚本层,数据层,测试报告层,驱动层
接口项目工程规划大致可分为几类:
1)首先是测试结果类,比如说叫 test_rusult,里面存放一些比如日志文件,测试报告
2)然后是测试用例 testcase,里面分模块存放测试用例。
3)接下来是公共方法类,比如说叫 public,或者是 tools,里面存放一些,读取 excel 数据的方法,发送 http 请求的方法,收集 log 日志的方法,发送邮件,操作数据库等方法。
4)还有就是配置文件类,比如说叫 config,里面存放一些指定运行部分用例的配置文件,连接数据库的配置文件。
5)最后是写一个 run 方法,运行所有的用例。
十九、测试框架里如何做到数据和代码分离?
第一种:写在 excel 表格里,像这种主要是读取 excel 数据有点麻烦,常用的用来读取 excel 的第三方库有 openpyxl,xlrd 等。当然读取 excel 数据最好用的还是用来做数据分析的 pandas 模块,不用写那么多 for 循环。
第二种:数据存放到 yaml 文件里,一个模块或者是一个功能写一个 yaml 文件,最后写个读取 yaml 文件的公共方法就行了。yaml 格式的文件比较简单。
第三种:存放在数据库里面。
第四种:数据存放在 json 文件里。
二十、依赖于第三方数据的接口如何进行测试
mock 接着面试官会问你,如果mock的,然后你就顺着坑继续挖,搭建mock服务等
这个需要自己去搭建一个mock服务,模拟接口返回数据
moco是一个开源的框架,在github上可以下载到https://github.com/dreamhead/moco
moco服务搭建需要自己能够熟练掌握,面试会问你具体如何搭建 ,如何模拟返回的数据,是用的什么格式,如何请求的
二十一、测试数据一般放在哪里
首先测试的数据是分很多种的,有登录的账户数据,也有注册的账户数据,还有接口的参数,还有邮箱配置的数据等等等等,所以这个题不能一概而论
以下两个大忌不能回答:
- 测试的数据是不能写死到代码里面的,这个是原则问题,也是写代码的大忌(你要是回答写在代码里面,估计就是回去等通知了)
- 测试数据放到.py的开头,这种其实很方便,对于少量的,固定不变的数据其实是可以放的,但是面试时候,千万不能这样说,面试官喜欢装逼的方法
测试数据存放总结:
1.对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如ini)
2.对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成
3.对于一个接口有多组测试的参数,可以参数化,数据放yaml,text,json,excel都可以
4.对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理
5.对于邮箱配置的一些参数,可以用ini配置文件
6.对于全部是独立的接口项目,可以用数据驱动方式,用excel/csv管理测试的接口数据
7.对于少量的静态数据,比如一个接口的测试数据,也就2-3组,可以写到py脚本的开头,十年八年都不会变更的
总之不同的测试数据,可以用不同的文件管理
二十二、什么是数据驱动,如何参数化
参数化和数据驱动的概念这个肯定要知道的,参数化的思想是代码用例写好了后,不需要改代码,只需维护测试数据就可以了,并且根据不同的测试数据生成多个用例
1)python里面用unittest框架
2)unittest框架还有一个paramunittest也可以实现
3)如果用的是pytest框架,也能实现参数化
4)pytest里面还有一个更加强大的功能,获得多个参数化参数的所有组合,可以堆叠参数化装饰器
二十三、不可逆的操作,一般如何处理,比如删除一个订单这种接口
此题考的是造数据的能力,接口的请求数据,很多都是需要依赖前面一个状态的
比如工作流这种,流向不同的人状态不一样,操作权限不一样,测试的时候,每种状态都要测到,就需要自己会造数据了。
平常手工测试造数据,直接在数据库改字段状态。那么自动化也是一样,造数据可以用python连数据库了,做增删改查的操作
测试用例前置操作,setUp做数据准备
后置操作,tearDown做数据清理
二十四、接口产生的垃圾数据如何清理
造数据和数据清理,需用python连数据库了,做增删改查的操作
测试用例前置操作,setUp做数据准备
后置操作,tearDown做数据清理
二十五、如何进行自动化脚本的研发工作
- 明确脚本研发需求:比如个人信息修改的自动化测试脚本的修改
- 对需求进行拆分和细化(按照层级)
- 进行相关的技术实验:遇到什么小问题,单独进行小实验
- 完成脚本开发,每个版本逐次完成
二十六、Jenkins持续集成
- 自动发邮件和定时执行
- 其中Gitlab服务器和Jenkins服务器可以在同一台服务器上,也可以在不同服务器上
二十七、软件测试用例万能设计思路
场景:针对微信两个人私聊的场景,设计一下用例
- 朋友圈点赞怎么测试
- 朋友圈评论怎么测试
- 抖音评论怎么测试
- 微信发红包怎么测试
- 微信发朋友圈怎么测试
- 登录功能怎么设计测试用例
软件测试用例万能设计思路:功能测试,UI测试,兼容性测试,网络测试,安全性测试,中断测试,接口测试,性能测试等多个方面去考虑
1、功能测试:随意发挥
2、UI测试:
说下看有没有错别字,还有比如你点赞或者评论的时候那个弹框的长度和宽度以及颜色是不是符合产品需求
以及微信私聊发出去文本也有文字框和颜色,发红包场景,红包也有大小和颜色吧,主要从这方面去回答
3、兼容性测试如果是 Web 程序就说用不同浏览器去测试,手机的话就是用不同品牌类型去测试,看下有没UI方面的展示问题,以及这个功能比如发红包,私聊,评论是不是兼容所有手机。
4、网络测试
这个是软件就要联网吧,可以说下测试下在弱网,无网,4G,5G 网络下面,这个功能是否还正常,有对应处理,比如无网就要提示等等。
然后还可以补充,有用过一些工具比如 fiddler 去模拟弱网等场景。
5、安全测试
这个不管是评论还是私聊,前端的报文总需要传给后端服务器吧,这时候可以说需要看下日志,看报文是不是加密传输的,确保安全。
除此之外,还可以说看下有没有 sql 注入等安全漏洞,虽然你不懂,但是可以说啊,面试官反正不会打断你问什么是 sql 注入咯。
6、中断测试
这个就是比如你在评论或者发红包或者私聊编辑好文字准备发的时候突然来电话了,或者手机没电了,你再打开会不会缓存你那些数据,要不要重新输入等等。
7、接口测试
刚刚你说功能测试点的时候应该都是基于页面说的,页面的背后不都接口调用吗?
那么就要做接口测试吧,接口测试可以说的就多了,包括字段校验,和上下游联调等等,这个问题就变成了怎么做接口测试,可以说的太多了。
8、性能测试
这个就是说比如在大用户并发同时操作的情况下,你这个登录,评论,私聊,发红包功能还能正常不,响应时间是不是会变得很长。这个一般是要做接口压力测试。
标签:面试题,请求,接口,参数,测试,自动化,服务器,数据 From: https://www.cnblogs.com/xiaoyanguniang/p/16413497.html