测试杂谈二

作者:Gakki

接口测试

  • 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及各个子系统之间的交互点。测试的重点是检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

接口测试的目的?

  • 大概汇总如下:
  1. 基于接口层面实现脱离手工的方式高效执行测试
  2. 接口自动化目的是提升效率
  3. 提升逼格,提高地位
  4. 通过适当的验证来获得控制反馈,对系统变更有把握
  5. 方便回归测试
  6. 提高回归测试的效率,保证质量
  7. 绩效考核,提升工资
  8. 控制住接口质量,终端问题可以少很多
  9. 更早的发现问题
  10. 缩短测试周期
  11. 发现更底层的问题

测试左移与测试右移

  • 测试左移和右移就是把测试的范围从传统测试的节点中释放出来,向左和右扩展。
  • 向左扩展:让测试介入开发提测之前的部分测试工作。 比如,扩展到开发阶段,在架构设计时就考虑产品的可测试性,并管理开发自测等。另外,测试可以更进一步扩展到需求评审阶段,让测试人员不只是了解需求,更需评估需求的质量。
  • 向右扩展:让测试介入服务或应用上线之后的部分。比如,测试人员在产品上线过程中,利用线上的真实环境测试,或者开展线上巡检。另外产品上线之后,测试人员依然关注,通过线上监控和预警,及时发现问题并跟进,将影响范围降到最低。这样一来,测试人员不但有更多的时间进行测试,还能发现在非生产环境中难以发现的问题。

其他?

  • 失效的对象级别授权:用户与服务器使用 API 进行通信时,服务器端未进行对象级别的权限控制或限制不严格。攻击者可以通过修改请求数据中的对象 ID 等信息,实现未授权获取或修改敏感信息。
  • 失效的用户身份验证:API 在访问时未对请求方进行身份验证或身份验证存在问题导致易被破解,那么攻击者可以实现未授权对 API 进行操作。比如:未校验令牌的有效性;更新密码接口未限制请求频率,旧密码参数可暴力破解;短信验证码或者邮箱验证码有效期超出 10 分钟或者长度小于 6 位。

兼容性测试?

  • 兼容性测试:指对所设计程序与硬件、软件之间的兼容性的测试。分为浏览器兼容测试和分辨率兼容测试两类。
  • 接口兼容性测试:简单来说就是参数组合测试。在边界分析的基础上,考虑输入条件的各种组合、输入条件之间的相互制约关系。也需考虑依赖数据库字段的兼容组合测试。主要使用因果图法进行用例设计。

如何设计接口压力测试方案?

  1. 如何确定并发数:
  • 可以通过尝试的方式。第一次压测的时候,可以设置自己预期接口需要达到的并发数,进行压力测试。然后通过二分法进行调整。比如:如果期望的并发数是 100,第一次压测并发数设置为 100,如果系统没有压力,第二次并发就尝试设置为 200。如果系统有压力,下次就设置为 150。通过逐渐尝试的方式,找出当前接口的并发阈值。
  1. 如何确定总请求次数:
  • 有时候单纯的通过并发数并不能完全发现系统的压力状况,因为并发数只能测出系统的处理能力。但有时随着长时间的调用,系统可能会出现其他问题。比如:随着数据量的增多,存储磁盘满了、内存缓存用光,缓存服务使用磁盘缓存而拖慢系统等情况。为了避免这种情况,可以尝试用现有线上业务每天产生的数量乘以一定的天数(天数的大小视业务的具体情况而定,推荐 180 天以上),作为接口压力测试的总请求次数。
  1. 接口压力测试数据的选取:
  • 通常随机选择数据。但是要注意重复进行压力测试对性能的影响。比如:压测的 id 是从 2500W 到 2600W 之间选择的,下次用同样的 id 范围做压测的时候,如果接口实现中有缓存,则会很大程度影响压力测试的结果,对压力测试的解读时候,要考虑到这个因素。另外,使用不存在的 id 去进行压测,结果并没有太大意义。

压力测试报告应该包含哪些结果?

  1. 接口压力测试结果:


    压测结果
  2. 服务器压力:

  • 每次接口压力测试时,接口所在服务的服务器 CPU/JVM 使用率历史记录,JVM 堆大小,响应时长图(pinpoint 查看),cpu load 值(top 命令),gc 信息等。

你可能感兴趣的:(测试杂谈二)