目录:导读
前言
为什么要设计case?
无论是功能测试还是自动化测试甚至性能测试,设计测试case都是必须的。
当然,不同的测试类型,在设计测试case时候的侧重点和颗粒度是不同的。
设计测试case的目的,我个人认为主要有如下几点原因:
1、便于测试活动开展
测试工作的本质是尽可能以更高的效率保障交付产出物的质量满足甚至超出预期,这是所有测试工作的最终目标。
但在实际的工作实践中,绝大多数的测试工作都是围绕测试case来开展。比如:case评审/冒烟测试/提测检查/case执行/bug提交/bug跟踪和修复验证,直至最终线上发布。
2、确保业务场景覆盖
软件测试工作,简单来说就是通过设计各种场景并进行检查,确保交付的软件符合预期设计结果。
无论是功能测试采用的等价类边界值方法,还是自动化测试分层的概念,都是希望通过一定的方法和手段,尽可能的保障业务场景覆盖,避免遗漏所导致的问题逃逸到线上,影响最终交付产出物的质量。
3、质量度量和质量内建
无论是质量度量还是近几年业内所提倡的质量内建,其实都和测试case息息相关。
测试case是研发过程质量中很重要的组成部分,或者可以理解为测试case是研发过程阶段各项测试工作开展的核心。
测试case具备“粒度最小+耗时最久”的特点,我们常说的通过各种测试技术手段多维度去验证软件是否符合预期,都是验证和保障交付质量的手段。而流程规范、度量标准,也是为了保障最终的交付物达标。
如何设计测试case?
UI层是用户使用产品的入口,所有功能通过这一层提供给用户,功能测试工作大多集中在这一层。
1、需求稳定,不会频繁变更
UI自动化测试最大的挑战就是需求和UI频繁变化,脚本需要修改、扩展去适应新的改动,如果频繁修改会导致投入产出比太低,那么UI自动化测试也失去了其价值和意义。
折中的做法是选择相对稳定的模块和功能进行自动化测试,变动较大、需求变更较频繁的部分手动回归。
2、多平台运行,组合遍历型、大量的重复任务
测试数据、测试用例、自动化脚本的重用性和移植性较强,降低成本,提高效率和价值。
3、软件维护周期长,有生命力
UI自动化测试的需求稳定性要求、自动化框架的设计、脚本开发与调试均需要时间,这其实也是一个软件开发过程,如果项目周期较短,没有足够的时间去支持这一过程,那自动化测试也就不需要了。
4、被测系统UI设计较为规范,可测试性强
主要出于这几点考虑:被测试系统UI差异、测试工具适应性、测试人员能力能否快速上手并落地;
接口自动化测试
从测试分层金字塔模型来说,API自动化测试是综合性价比最高的一种测试手段。在设计case时可遵循如下顺序:
明确要开展API自动化测试的业务范围;
针对业务范围内的接口,区分优先级(一般都是先覆盖P0/P1);
梳理接口对应的业务场景(优先保障正向的业务场景覆盖,如下单是正向,取消订单是逆向);
明确接口对应的数据类型(包含哪些字段/对应数据库的表字段/必填非必填/验签鉴权特殊账号权限等);
准备测试数据,接口调试通畅(先确保单接口单场景的覆盖,再考虑复杂场景的各种依赖和业务链路串联);
自动化执行起来,边执行边观察效果,不断优化(切忌大而全的过度设计);
UNIT自动化
单元测试(unit testing),是指对软件中的最小可测试单元进行检查验证,最初都是由开发来完成,即保障自己所在环节的交付产出物满足进入下一阶段的标准。
关于单元测试,我的观点是测试需要介入这个环节,尽可能早的去测试验证发现问题,但并不表示测试需要在这个环节什么都自己来做。
在设计单元测试case和执行方面,可以考虑如下几点:
QA和DEV针对单元测试case级别达成共识;
QA和DEV在单元测试环节进行合作共建和职责边界划分;
QA提供用例,DEV进行实现;
QA提供的用例需要经过评审并通过;
QA进行Check和校验(度量维度和评估指标与开发达成一致);
设定优先级,从P0核心模块开始实现;
覆盖范围以service核心模块,新增功能优先;
在code review阶段,对单元测试实现情况进行检查;
需要通过实施前后不同维度的比较度量来评估能否带来收益;
数据度量:覆盖率、通过率;
发现bug数:线上问题、线下发现的block bug;
度量粒度:小到最底层函数级别,大到代码类方法;
测试用例:单元测试的实现和度量,一定是case by case的;
设计case要注意什么?
由简到难,适可而止
不同维度的自动化测试case设计和实施,都是覆盖范围越大/粒度越小,投入成本越大,这是个边际递减的问题。
现在很多企业都提倡研发效能和快速迭代,这种时候就不能慢工出细活了,要考虑如何以更小的投入和更快的速度完成核心场景覆盖,达到快速验证的目的,不要太过于追求所谓的覆盖率和case数量等度量指标。
切记不要面向质量度量和KPI搞自动化测试,这样容易捡了芝麻丢了西瓜。
可观察,可验证,可度量
在设计自动化测试case时还应注意这三点:
可观察:case执行过程需要能够直观的进行观测,比如抛异常或数据写入变更;
可验证:自动化case的结果是否符合预期,一定要通过断言或其他验证方式进行确认;
可度量:自动化执行的结果要可度量(不要面向质量度量搞自动化,但没有度量的自动化测试没有意义)
最新最全花1W买的Python+Selenium全栈Web自动化测试
下面是我整理的2024年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
人生没有白走的路,每一步都在为未来铺路。当你觉得疲惫时,请记住:钻石经过打磨才能闪耀,钢铁经过锤炼才更坚韧。那些看似艰难的挑战,终将成为你蜕变的契机。坚持住,胜利就在转角处!
梦想不会逃跑,逃跑的往往是自己的决心。每一个伟大的成就,都始于一个勇敢的开始。别等待完美时机,此刻就是最好的起点。你的坚持,终将让平凡的日子绽放非凡的光芒!