• 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、个人基本信息对于这一部分来说,只要突出自己在个人基本信息的优势。2、个人技能情况技能的话就把你的过程改进思想和技术全部体现在里边,避免了解的词汇。3、个人学校经历具体的学校信息情况和时间。4、个人工作经历主要写哪年到哪年在哪家公司,简单描述做什么事情。5、项目经验这块最重要的,最好能有3个项目左右,如果你毕业1年以上的话,然后在这个项目写出完整的项目模块信息,对项目介绍,然后测试在项目的完整流程你做的事情,然后就是你...
            9 9 2406
            分享
          •   现在国内测试行业的断层实际上非常严重,不论是从公司角度,还是从测试行业角度。关于测试人的职业发展,相信每个人都有自己的深刻体会,特别是“老一点“的,又不在互联网大厂的测试人员。  本文针对几个测试同学普遍关注的典型问题,整理了测试专家刘晓光老师的解答,供大家交流探讨。  Question  1、测试技能的提高主要是依托于公司平台,还是个人外部自学能力?  2、国内大部分公司对测试职能是普遍低估的,如何让领导重视,提高测试的地位?  3、测试也细分了很多专项测试,从个人发展角度,专项测试 or 全面的系统测试,哪个更符合未来职业发展要求?  4、现在火热的测试开发(能力超高)是否已经脱离了测...
            0 0 1098
            分享
          • 工具的安装和基本使用方法已在我的前文中介绍了,不懂的可以翻回去看看https://blog.csdn.net/qq_34101364/article/details/104883675本次笔记需要用到的工具:Android killer、夜神模拟器、ddms1、打开android killer,将你要渗透的app拖进去,找到你要注入的函数2、导入调试包(不知道哪个大神的,有知道的可以告诉我,我注明出处),调试包获取位置:链接:https://pan.baidu.com/s/1hQjGP-DzlExojeKcSbVw4g提取码:1jv8把它放在你要调试的项目目录下日志函数的说明#log输出str...
            14 15 1960
            分享
          •   想做程序员,想学软件测试,是自学还是培训好?学习的关键是什么呢?  大家纠结的点在于,我是应该去参加培训班还是选择自学,我自身的话没有参加过培训班,所以我觉得没有什么发言权来给大家什么建议。不过我后来去咨询了几个朋友,有一个是在培训机构当老师,还有两个曾经也接受过培训。我根据他们说的,还有结合我自己的一些想法来给大家做个分享。当然如果你有什么补充的,可以在评论区留言!  关于自学还是选择培训有几点——  第一:  你是零基础的小白,自学约等于浪费时间。这个公式在多数情况下都成立,当然,如果你有自信的话可以去试一下。  第二:  如果你有一到两年的开发/测试的经验,想在技术上有所提升,那这个...
            0 0 922
            分享
          •   只要访问过网页的地球人都知道,很多时候页面内容的加载并非与你的访问操作实时同步显现。是什么原因导致的呢?这是由于大多数Web应用程序都结合Ajax/Javascript技术开发,当浏览器进行页面信息加载时,页面中的元素会在不同的时间间隙内陆续完成加载,比较常见的场景诸如:跟随你的滚动条下滑,逐步呈现当前图文信息;鼠标悬停某文本框,自动出现提示文本等。  对于Web自动化测试而言,页面元素呈现的时间差异会让元素识别变得相对困难,在未能找到指定元素的情况下,还会引发各种异常报错,如“Element not found”等。所幸的是Selenium WebDriver提供了不同的等待类...
            2 2 1248
            分享
      • 51testing软件测试圈微信