数据库分析:
分析数据库表结构:
- ER图:查看ER图,了解表之间的关系、主键、外键等
- 表结构:sql获取表结构信息,包括字段名、数据类型、约束等
数据库完整性检查:
- 主键约束:确保每个记录都有唯一标识。
- 外键约束:检查外键关系,确保引用的记录在主表中存在。
- 非空约束:验证关键字段是否符合非空要求
数据一致性检查:
- 数据类型:确保字段的数据类型与预期一致(如日期字段应为日期类型)。
- 范围检查:验证数值字段是否在合理范围内(如年龄字段应在0-120之间)。
- 格式检查:检查字符串字段的格式(如电子邮件、电话号码等)。
数据准确性检查:
- 数据抽样:随机抽取部分数据进行手动验证,确保数据的准确性。
- 业务规则验证:根据业务逻辑检查数据是否符合预期(如订单表中的订单状态是否合理)。
压单测试方法
固定QPS与固定并发数的测试方法主要涉及通过调整并发数和保持QPS不变或固定,以及通过保持并发数不变而调整请求速率来测试系统的性能。
-
固定QPS测试方法:
- 在这种测试中,测试者会设定一个特定的QPS值,并逐渐增加并发数以维持这个QPS值。例如,如果设定的QPS是100,测试者会从较低的并发数开始,逐渐增加用户请求,直到达到或接近100 QPS,同时观察系统的响应时间和资源使用情况。这种测试有助于了解系统在高负载下的性能表现,包括是否能够稳定地处理高并发请求。
-
固定并发数测试方法:
- 在固定并发数的测试中,测试者会设定一个固定的并发数,然后逐渐增加请求的发送速率,即QPS,来观察系统在不同请求速率下的性能表现。例如,如果设定的并发数为100,测试者会保持这个并发数不变,然后从较低的QPS开始,逐渐增加QPS的值,同时观察系统的响应时间和资源使用情况。这种测试有助于评估系统在不同请求速率下的响应能力和资源利用率。
压测思路包括使用压测工具(如jmeter)来模拟多用户对系统进行压力测试。测试的方式可以是保持总请求量不变,逐步增加并发量,观察QPS的变化及平均响应时间的变化。通过这种方式,可以了解系统的吞吐量极限以及在高压情况下的性能表现。此外,还可以通过调整并发数直到接口响应出现错误,来测得系统能承载的最大并发数12。
综上所述,固定QPS与固定并发数的测试方法各有侧重,前者侧重于评估系统在高并发下的性能和资源利用,而后者则侧重于评估系统在不同请求速率下的响应能力和资源利用率。这两种方法都有助于全面评估系统的性能和稳定性。
(虽然名义上是查询的意思,但实际上,现在习惯于对单一接口服务的处理能力用QPS进行表述(即使它并不是查询操作))
计算公式:
并发数 = QPS * 平均响应时间
并行与并发:
并行:在同一时刻
并发:在同一段时间(比如1s内)
分布式锁:
锁的作用是防止并发操作,造成数据不一致性。通过分布式锁来确保同一时间只有一个线程可以执行同一个任务。
执行线程,先去拿锁:
if(拿不到锁):
return
try:
执行数据库操作
except:
log.info("")
finally:
释放锁
准入用例:
- 每一个需求创建一份准入用例
- 准入用例由当前需求的改动点 + 业务核心链路点 两部分用例组成
回归用例:
- 确保测试用例的目标清晰,主要是验证新代码的更改是否影响了现有功能。
- 选择关键业务流程和功能进行测试,确保这些功能在代码更改后仍能正常工作。
- 参考历史缺陷和问题,确保这些问题在回归测试中得到验证。
- 用例应当简洁,避免复杂的逻辑,便于理解和执行。
- 根据功能的重要性和使用频率对测试用例进行优先级排序。
- 尽可能使用自动化回归。
前端筛选:
数据量较小的情况,所有数据都已加载到客户端,前端进行筛选
如果筛选需要及时反馈,通常在前端进行
后端筛选:
数据量大或需要从数据库中动态获取的数据,这样能减少前端的负担;
如果筛选涉及敏感数据或需需要进行复杂的权限验证,通常后端处理;
具体使用哪种方式取决于应用的需求、数据量、性能考虑。
全量排序与分页排序:
全量排序适合数据量小的列表
对于数据量大的列表建议采用分页排序,性能更好
心得笔记:
QA应保证全流程测试,QA的职责大于Tester。
好的QA尽量使工作前移到需求设计,预防大于检查。