当前位置: 首页 > news >正文

在设计测试用例前你应该考虑的重点在哪里?

如果你设计用例的时候,经常有漏测点,或者说有人说你的测试用例没有覆盖较深入逻辑,那么分享一些个人心得,希望对你有帮助。

一般作为测试,你会和产品、开发、用户打交道,那么在设计用例时,也就需要从“需求”、“开发设计”、“使用者”这几个方面进行思考了。

1、了解你的测试需求

有没有什么需求是不明确的?--列举不明确的需求点,参考竞品,一条一条和产品确认。

案例:

需求关键字:上传服务。

其他信息:开发设计文档,包括接口信息、服务之间的调用流程、数据库表结构。

看到这简单的需求时,你会怎么做?当你毫无头绪的时候,你会怎么做?

这时,首先我会根据自己已知的尝试对需求进行分析,然后我会谷歌相关类型的功能需求。

以下得出的一些分析点,这里需要再次和产品沟通明确具体的预期:

  •   *上传服务是给谁用的--前端调用?其他服务调用?
  •   *上传什么内容--文件?视频?图片?压缩包?安装文件?
  •   *上传的大小--支持大文件?大文件是多大?
  •   *上传模式--断点续传?
  •   *上传交互--是否支持重复上传?可暂停上传?可取消上传?上传失败后是否支持重试?

业务流程是什么?--首先你得明确业务流程成功后下一步是什么?业务流程失败后下一步是什么?成功或者失败影响到哪些数据的状态变动或影响着哪些数据的计算?

案例:

采购后是否需要物流?采购后是否需要入库?如果产生退货,退货成功后也影响着库存的变动。

采购单成功,那么进行入库,入库成功或者失败都影响着库存的变动。

出库成功或者失败都影响着库存的变动。

2、了解需求的开发设计
 

2.1数据库表:

你在完全清楚需求的场景下,思考数据表结构怎么设计,数据怎么存储,存储是否满足需求?

每个表的字段的值是从哪里来的?通过其他数据由服务计算得来的?计算公式是什么?

案例:

例如订单的总金额=sum(商品单价*数量)-折扣,那么从总金额的边界值考虑,总金额=0时,是否存储成功;从商品单价考虑,商品单价=0时,是否总金额=0,是否存储成功;

从折扣考虑,折扣=sum(商品单价*数量),是否总金额=0?

实体之间的关系是怎么样的?是1:1/1:n/n:n的吗?

案例:一次下单可以购买多个商品,一个商品可以被多次购买,

这时就要看数据库表是怎么存储这样的数据的?

能否说一个订单找得到当时下单的商品,通过一个商品找到所有购买该商品的订单。

前端界面的数据操作如何影响数据库表的数据存储?

其他外键实体的状态字段、逻辑控制字段是否影响着当前表的数据?

当前功能涉及的表有哪些?其他功能是否也与这些主体有交互,如果有交互的话,这些主体的数据产生是否有影响?这些表的关联主体是什么?是否会对这些关联主体产生影响。(回归的时候也需要覆盖这些关联主体的地方。)

其他方面:

1)表结构是否建了索引,为什么这样建索引?怎么设计索引使得用最少的索引覆盖最多的查询场景。

2)查询sql语句为什么这么写,这么写性能是否达标?(可以使用explain关键字分析sql的执行情况,从而得到最优的查询sql语句)

3)是否有字段使用了乐观锁或者悲观锁?如果使用了,是否存在并发问题导致数据更改失败?是否会出现因为锁而导致性能问题?

2.2接口请求交互:

*该接口请求如何被前端调用?调用的时序图是什么?

*接口的应用场景是什么?谁是使用者?

*接口设计的各个字段的用途是什么?是什么意思?是信息字段,还是逻辑控制字段?如果是逻辑控制字段,如何控制着数据的走向?

*如果连续请求一堆请求的话,有什么请求失败后会对功能产生影响的?

*如果连续请求一堆请求的话,如果有请求失败的话,是否会产生脏数据,这时是否有建立事务机制,要么全部成功,要么全部失败。如果不能建立事务机制的话,是不是处于可接受状态?

(ps:可接受状态的标准是:不涉及交易功能;不影响后面的功能,可以再次创建一次;)

案例:创建用户,先创建user,再创建用户相关信息,用户的负责人等等,这时创建用户成功,其他信息失败,但这不影响该用户的使用。那么这时这样的数据是可以接受的。

2.3功能的算法逻辑

背后的逻辑流程图是什么?和需求模块的业务流程有点相似。

3、使用者

使用者具体对象是谁?--前端交互的用户?某个服务?定时任务?(考虑的是用户操作习惯问题)

使用环境是什么?--浏览器?操作系统?手机?计算机?(考虑的是兼容性问题)网络情况如何?(考虑的是网络问题)

使用的用户有多少?数据库量级是多少?经常跑的业务线是哪条?什么时间段用户数量激增?(考虑的是性能问题)

使用者是否使用过程中是否存在权限问题?数据的保密性如何?用户敏感数据是否得脱敏?

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

相关文章:

  • 5.Nodejs中的包、npm、第三方模块、package.json以及cnpm
  • 如何使用Google Analytics跟踪WordPress网站的用户参与度
  • 大型医院his系统源码 医院信息管理系统源码 C/S架构
  • EN 16069建筑物用隔热产品.工厂制造的聚乙烯泡沫(PEF)产品—CE认证
  • UE4 源码解析----引擎初始化流程
  • 叶酸PEG衍生物​DBCO-PEG-Folate,DBCO-PEG-FA,二苯基环辛炔-聚乙二醇-叶酸
  • 【dll】windows下使用vs编译动态链接库dll与使用
  • 2022年ios证书最新申请流程
  • 普冉 PY32F003 资料和入坑方法
  • springboot+微信小程序健康饮食系统毕业设计源码280920
  • 介绍日本日置IM7583阻抗分析仪
  • 如何开始做股票量化交易?
  • 1446_TC275 DataSheet阅读笔记7_部分管脚功能的梳理
  • 优化算法|MOAVOA:一种新的多目标人工秃鹰优化算法(Matlab代码实现)
  • 基于Springboot+vue的茶叶销售商城网站 elementui
  • 收藏网友的 源程序下载网
  • 2018一半小结一波
  • Java应用性能调优
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • spring boot下thymeleaf全局静态变量配置
  • Spring-boot 启动时碰到的错误
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 从PHP迁移至Golang - 基础篇
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 前端自动化解决方案
  • 如何学习JavaEE,项目又该如何做?
  • 小程序测试方案初探
  • 1.Ext JS 建立web开发工程
  • $ git push -u origin master 推送到远程库出错
  • (12)Linux 常见的三种进程状态
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C语言)fread与fwrite详解
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (poj1.2.1)1970(筛选法模拟)
  • (力扣)循环队列的实现与详解(C语言)
  • (区间dp) (经典例题) 石子合并
  • (三) diretfbrc详解
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)负载均衡,回话保持,cookie
  • (转载)利用webkit抓取动态网页和链接
  • .NET Core Web APi类库如何内嵌运行?
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .py文件应该怎样打开?
  • 。Net下Windows服务程序开发疑惑
  • @Bean注解详解
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @Service注解让spring找到你的Service bean
  • @SpringBootApplication 包含的三个注解及其含义
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [AIGC 大数据基础]hive浅谈
  • [Android]使用Retrofit进行网络请求