资深老鸟总结,接口测试加解密处理+BUG定位+金融项目经验...


前言

加解密接口的处理

目标:
知道项目中接口加解密的实现流程
了解加解密的代码实现
知道Jmeter如何实现接口加解密测试
知道基于Requests如何实现接口加解密测试

1、APP端/客户端接口加解密介绍

加密方式(两种):
在TCP/IP四层模型中的应用层进行加密。类似密码本,当前项目使用的是这种,可以看到所有响应内容,只是看不懂。

在TCP/IP四层模型中的运输层和应用层之间进行加密,通过传输协议实现加密,如https。类似加密路径,此种加密方式抓取到的报文响应内容全是乱码

2、加解密接口测试时的要点

核心就是:编写出与应用服务器相匹配的加密和解密方法

所以在公司中加解密的接口测试如何进行:

找开发来要加解密的方法(因为项目代码中一定有对应的加解密方法)
在测试环境中将加解密的方法跳过(需要跟开发讨论,看难度和影响而定)

系统测试执行要点

正常情况下公司中系统测试分为多轮进行:

第一轮通常是需要执行所有的系统测试用例(必须有)
执行过程中的所有缺陷需要及时提交缺陷报告

第二轮通常是根据替丁的策略来选择部分的系统测试用例进行执行
特定的策略通常由测试主管来制定

策略一般有:根据优先级(高、中),模块(风险高的模块)、根据用例的类型(功能、稳定性、兼容性)……

第三轮通常是发散测试
常见的形式是:组内交叉测试(正常情况下A负责模块1,B负责模块2;交叉测试时,B负责模块1,A负责模块2,而且不需要按照用例来执行)
最后为了保险起见,发布前有时还会针对所有Level0即最高优先级的用例再进行一轮测试,保证发布的系统基本功能可用。

BUG定位

要求:
基本要求:定位出bug所属前端还是后端
更高要求:bug所属模块,bug的代码级别(不要求)

价值:
找到BUG的复现路径,提升开发修复BUG的效率
提升自身的逻辑思维与技术能力

定位的技巧:
逻辑分析
分析所有可能,逐个排查
找到最短复现路径

——案例:玩CF游戏,从高处跳下来,概率出现不掉血的情况 —— bug

分析问题可能的原因:高度、重量、地形、姿势……
针对每一个维度分别进行测试分析,将其他因素固定,只改变其中一个因素
最终确定会产生bug的影响因素
技术手段
查看数据库
抓包分析
查看服务器日志

——案例/面试题:界面上添加用户,在用户列表中未看到对应的用户信息

查看数据库中是否有对应的用户记录
有则说明,题目中的两个操作,添加用户的操作成功,查看用户的操作失败

没有则说明,添加用户的操作没有成功
针对第一步确定下来失败的业务操作进行抓包,观察所有的请求和响应数据,同时抓取服务器的日志

先看响应码,如果响应中有4XX错误,客户端请求有问题;5XX错误,服务端有问题(大概率是BUG);2XX,则需要进一步的分析

——响应为200时,检查响应内容:
响应正确,但前端页面显示不出来,查看响应字段和前端定义字段是否匹配,若不匹配,找前端人员来确定是前端/后端没定义好

响应错误,检查请求参数是否正确
请求参数不正确,前端代码问题
请求参数正确,但响应错误,结合服务器日志来进行问题的定位(大概率为后端代码问题)

备注:服务器日志需要与开发人员确定其所在位置(可写入日志文件,也可能直接打印在命令行窗口)

金融项目测试经验(结合具体的案例来回答)

项目的介绍 项目是做什么的?
项目给谁用的?
项目包含哪些主要功能?
项目的技术架构是什么?
项目的核心业务流程是什么?
项目的测试过程是什么?
参与需求评审,进行需求分析
写测试计划并评审
编写测试点和系统测试用例并评审,如果有接口测试则编写接口测试用例并评审
执行接口测试用例(手工和自动化执行),执行系统测试用例
编写测试报告并评审
如何测试自己负责的功能模块?(即测试用例怎么设计)
从功能、性能、易用性、兼容性……各个维度进行测试
功能测试时,首先针对每个页面中的功能点设计测试用例;如:。。。。具体的那个页面哪些功能点,通过哪些方法设计的
然后再针对业务流程设计测试用例;如:。。。。。同上
性能测试时,如。。。
易用性,如。。。
兼容性:如浏览器、操作系统、分辨率。。。。。

面试题:接口测试用例如何设计?

单接口的设计
正向(成功):必填参数、全部参数
反向(失败):
参数错误:多参,少参(优先级低)
参数数据错误:数据为空,长度范围错误,类型错误(优先级中)
业务数据错误:基于业务功能返回错误异常(参考API中定义的不同的错误描述)——(优先级高)结合项目的业务来说。。。
多接口的设计
整理出系统的业务流程,结合项目的业务来说。。。
把业务流程中的每个动作对应接口整理出来,结合项目的业务来说。。。
按照业务流程的顺序进行测试,结合项目的业务来说。。。

面试题:接口测试的时机/目的是什么?(问清是指手工执行接口测试还是自动化接口测试)

手工执行接口测试
时机:后端开发完成,但前端没有开发完成
目的:尽早发现BUG
自动化接口测试
时机:在项目测试全过程
目的:保证项目质量,避免开发修改代码引人新问题(感觉和回归测试差不多)

面试题:如何准备接口自动化测试过程中的数据?(一个项目中需要的数据情景是很多样性的,这三种情景都会出现)

手工构造:只需要一次构造可以长时间使用的数据
接口方式构造:需要多次构造,且数据相对比较复杂的情况
数据库防暑:需要多次构造,但数据涉及表结构比较简单(数据涉及的表结构不超过两张)

面试题:如何使用Jmeter编写接口自动化脚本?

会编写接口自动化脚本
每个测试用例对应Jmeter中的一个线程组
使用HTTP取样器发送请求
补充用法:数据定义、响应结果的数据关联、响应断言……
对自动化数据能进行自动化清除
配置JDBC连接池
通过JDBC Request请求,执行清除数据SQL语句
Jmeter脚本部署到持续集成

面试题:如何使用代码编写接口自动化脚本?

先搭建框架(api、script、log、report、utils、app)
定义日志初始化配置和运行脚本的套件
编写脚本时
先定义API接口类
在测试脚本中调用API的接口类

面试题:如何保证接口自动化测试脚本的稳定性?

跑完脚本后清除测试数据
断言时通过连接数据库的方式获取实际的数据,而不使用固定数据

面试题:项目中涉及到第三方接口时如何进行接口测试?

通过mock技术,模拟第三方系统接收请求,并返回响应

面试题:项目测试过程中发现的印象深刻的BUG?

发现/定位困难,如概率性BUG
有技术含量的BUG,如接口、白和测试,通过代码分析发现的BUG(不是手工容易构造的BUG)
BUG沟通过程中,比较曲折,并最终解决
以上是印象深刻的BUG的思路,结合自己的项目来准备

面试题:项目测试过程中遇到的问题

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

只有不断努力拼搏,才能让梦想绽放光芒,勇敢面对困难挑战,不放弃,必将收获辉煌。在追求目标的道路上,坚持不懈,终将成就非凡。

每一次努力都是自我成长的起点,坚持不懈,奋发向前,只有不停地突破自己,才能创造出更加辉煌的人生。

只要心怀梦想,勇敢面对挑战,不断学习进步,就一定能书写属于自己的精彩人生,奋斗不止,终成大业。

  • 19
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值