• 0
  • 1
分享

第二篇 基础问答(下)


6. 依赖第三方的接口如何处理?

这个需要自己去搭建一个mock服务,模拟接口返回数据,也就是我们常说的挡板服务。可以使用的工具有很多,比如在线版的 easy mock,java优秀的接口mock工具moco,或者利用web开发的框架比如flask、django等等自己写一个小的接口服务,部署上就可以。

有了mock服务,让开发人员把对应的地址替换掉即可。如果不方便替换可以使用抓包工具或者burpsuite截获请求,修改地址或相应参数,再发送出去就可以了。

关于mock的服务还会衍生出一个很常见的话题:如果我们的接口需要真实支付(比如对接支付宝的相关接口),如何测试?也就是说你每测试一次支付接口都需要真实地支付。

其实这个问题很简单,我能想到的解决方式主要有以下几个:

- mock掉第三方的支付接口,返回固定数据即可

- 一分一分的付或者付完退款(真实测试团队就是这么做的)

- 看看能不能获取第三方支付接口的沙箱环境,那样就好办了。关于什么是沙箱,你应该谷歌一下。


7. 对于接口测试中产生的垃圾数据如何处理?对于不可逆操作,比如删除订单,如何保证数据可用性?

这个问题考察的是你,能否在接口测试过程中动态的去处理测试数据。具体来说就是:在需要测试数据的时候,能够自动生成。在测试完毕后,能清除测试过程产生的垃圾数据(尤其对于生成环境)。

接口的请求数据,很多都是需要依赖前面一个状态的

比如工作流这种,流向不同的人状态不一样,操作权限不一样,测试的时候,每种状态都要测到,就需要自己会造数据了。

平常手工测试造数据,直接在数据库改字段状态。那么自动化也是一样,造数据可以用python连数据库做增删改查的操作。如果没有数据库的直接操作权限,可以间接的调用其他接口(比如下单接口)生成数据。在自动化测试中测试用例前置操作,setUp做数据准备。

对于垃圾数据的处理,和上面说到的生成数据的方式一样,调用相关接口(比如删除订单接口)或直接链接数据库进行数据删除。在自动化测试中使用后置操作,tearDown做数据清理。对于非生产环境,如果不想造成数据污染也可以切换影子数据库或者使用mock服务,不真实生成数据。


 8. 说一说你对于参数化和数据驱动的理解?

这个问题牵扯到自动化测试中很重要的两个概念:参数化和数据驱动。其实在我看来他们两个是一回事--测试脚本与数据的分离。举个例子:你的登录脚本原本固定写了一组测试数据:用户名、密码。每次改数据还要改脚本,我要把数据和脚本分离出来,那就把用户名、密码提取到外面,最好放在一个外部文件中,这个就叫参数化。

对于性能测试来说,我想保证每个虚拟用户都使用不同的用户名和密码登录,这样更加贴近真实的业务场景。对于自动化测试来说,我想测试多种数据组合--比如各种类型的用户名、密码。不管是哪种场景,都要有多组数据,但登录操作流程固定不变。这个就叫数据驱动。

对于一般开发语言的单元测试框架都有数据驱动的功能,比如Python的ddt模块,TestNG的DataProvider注解。


9. 你的接口自动化,测试数据如何存放?

测试数据到底该怎么放,这个是面试官最喜欢问的一个题了,似乎仁者见仁智者见智,没有标准的答案,有的人说放excel,也有的说放.py脚本,也有的说放ini配置文件,

还有放到json,yaml文件,txt文件,甚至有的放数据库,五花八门,一百个做自动化的小伙伴有100个放的地方。

这里总结下测试的数据到底该怎么放?

首先测试的数据是分很多种的,有登录的账户数据,也有注册的账户数据,还有接口的参数,还有邮箱配置的数据等等等等,所以这个题不能一概而论给答死了。要不然就是给自己挖坑。

以下两个大忌不能回答:

测试的数据是不能写死到代码里面的,这个是原则问题,也是写代码的大忌(你要是回答写在代码里面,估计就是回去等通知了)

测试数据放到.py的开头,这种其实很方便,对于少量的,固定不变的数据其实是可以放的,但是面试时候,千万不能这样说,面试官喜欢高大上的方法

测试数据存放总结:

1.对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如ini)

2.对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成

3.对于一个接口有多组测试的参数,可以参数化,数据放yaml,text,json,excel都可以

4.对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理

5.对于邮箱配置的一些参数,可以用ini配置文件

6.对于全部是独立的接口项目,可以用数据驱动方式,用excel/csv管理测试的接口数据

7.对于少量的静态数据,比如一个接口的测试数据,也就2-3组,可以写到py脚本的开头,十年八年都不会变更的


10. 说一说你所知道的接口安全测试?

安全这个问题,所有的团队都很看重。接口的安全测试主要有以下几个方面:

- 接口对于请求参数篡改的预防

引入签名、参数MD5加密等

- 关于接口身份认证存在的漏洞

cookie仿冒、session劫持、平行和垂直越权

- 完善接口的防刷机制

比如暴力破解短信验证码、找回密码功能的枚举破解安全问题

- 竞争条件—利用线程并发漏洞

超过限制下单、同时申请多笔退款

- 注入类攻击

sql注入、sqlmap 接口注入检查

关于安全,能说的还有很多。但是能在上面列举的点中,挑出两三个解释清楚就很好了。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   1、${__counter(,)} 计数器-加1的功能  疑问:假如加2,使用计数器 -计数器超过最大值后重新开始计数  重点:最大值, 如果运行结果超过最大值时,又会从起始值开始循环每个  用户独立计数器:多线程时,每个用户都是从起始值开始计数,跟线程号有关(${__threadNum} 获取线程号函数)  计数器注意事项如图显示:  2、时间相关的几个函数  ${__time(,)} 默认获取当前时间戳函数,但可以设置格式,比如yyyy-MM-dd 年月日的格式 HHmmss 时分秒 S毫秒   ${__dateTimeConvert(...
            0 0 936
            分享
          • WebSocket 的重要性Websocket 是一种新型的协议,它允许客户端和服务器之间建立实时的双向通信通道。相比于 HTTP 协议来说,它具有以下优点:实时性: Websocket支持服务器主动向客户端推送消息,使得客户端能够实时接收到服务器的事件和数据变化。双向性: Websocket支持全双工通信,即客户端和服务器可以同时发送和接收数据。节约资源: 相比于轮询机制,Websocket只需要建立一次连接即可实现实时通信,这样可以减少服务器的压力和网络流量。兼容性: Websocket 协议能够支持所有主流的浏览器和移动设备。Websoc...
            0 0 2113
            分享
          •        原理:基于 Xposed 框架,给应用代码挂钩子。       监听接受消息的函数,遇到是红包的消息之后,直接调用抢红包的代码。       昨晚从师姐处了解到了Xposed框架,今天就请教了一下APP渗透测试的小伙伴,学了一会终于学会了,可能我比较无聊,玩了一下午抢红包和自动回复。       Xposed框架是一款特殊的安卓App,其主要功能是提供一个新的应用平台,玩家们安装Xposed框架后,就能够通过Xposed框...
            14 14 5262
            分享
          •  前端mock数据的尴尬作为前端开发,拿到产品的需求,和后端讨论接口和数据结构的定义后,就可以开始前端的开发工作了,但后端一般无法在很短的时间内把接口开发完成,提供给前端使用,前端为了在开发过程中模拟真实的接口请求,往往需要自己去实现接口mock数据。mock数据是一件很麻烦的事,虽然有现成的mock库可以使用,生成mock数据,但是需要学习mock语法,学习成本高,花费时间多,大大降低开发效率,尽管之前在网络上尝试过很多接口mock平台,但大部分都是界面简陋,缺少可视化的界面,同样需要学习mock语法,花费的时间和精力依然没有减少,每次使用这些平台和工具都会有一种抗拒心理........
            11 11 2157
            分享
          • IT之家 10 月 9 日消息,腾讯科技 (深圳) 有限公司近日申请注册多个狗头形象图形商标以及“微信创意表情”商标,国际分类含广告销售、教育娱乐、通讯服务等,当前商标状态均为注册申请中。▲ 腾讯申请注册的狗头形象图形商标▲ 腾讯申请注册的“微信创意表情”商标近年来,微信、微博、QQ 等平台相继推出狗头、二哈表情包,成功在国内带火狗头表情包。IT之家了解到,狗头表情包来源于日本的一只名为 Kabosu 的柴犬,2010 年它的主人在网络上发布了一张它的照片,因为狗狗表情太过魔性很快在全球走红。不止腾讯,微博和字节跳动也申请过狗头商标。▲ 腾讯此前完成注册的“狗头”商标2021 年,腾讯科技(深...
            0 0 759
            分享
      • 51testing软件测试圈微信