这篇文章我想跟大伙聊聊设计自动化测试case的一些实践和观点。
无论是功能测试还是自动化测试甚至性能测试,设计测试case都是必须的。
当然,不同的测试类型,在设计测试case时候的侧重点和颗粒度是不同的。
设计测试case的目的,我个人认为主要有如下几点原因:
便于测试活动开展
测试工作的本质是尽可能以更高的效率保障交付产出物的质量满足甚至超出预期,这是所有测试工作的最终目标。
但在实际的工作实践中,绝大多数的测试工作都是围绕测试case来开展。比如:case评审/冒烟测试/提测检查/case执行/bug提交/bug跟踪和修复验证,直至最终线上发布。
确保业务场景覆盖
软件测试工作,简单来说就是通过设计各种场景并进行检查,确保交付的软件符合预期设计结果。
无论是功能测试采用的等价类边界值方法,还是自动化测试分层的概念,都是希望通过一定的方法和手段,尽可能的保障业务场景覆盖,避免遗漏所导致的问题逃逸到线上,影响最终交付产出物的质量。
质量度量和质量内建
无论是质量度量还是近几年业内所提倡的质量内建,其实都和测试case息息相关。
在前面的文章《聊聊我对质量度量的看法》中我提到过,质量度量分为三个阶段,分别是:
而测试case是研发过程质量中很重要的组成部分,或者可以理解为测试case是研发过程阶段各项测试工作开展的核心。
测试case具备“粒度最小+耗时最久”的特点,我们常说的通过各种测试技术手段多维度去验证软件是否符合预期,都是验证和保障交付质量的手段。而流程规范、度量标准,也是为了保障最终的交付物达标。
按照分层测试理念,金字塔模型中,越是向下,投入/产出比就越高,但开展的难易程度/成本和技术要求就越高。
聊到如何设计自动化测试case,这里我并不会就着某些细节去拼命挖掘,而是分为UI自动化/API自动化/UNIT自动化各自展开来阐述我的一些思路和想法。
UI层是用户使用产品的入口,所有功能通过这一层提供给用户,功能测试工作大多集中在这一层。
如上图所示,要开展UI自动化,在设计case时候要针对性评估和筛选适合的业务场景,当然在实际工作实践中,不可能完全满足上述条件。一般来说只要满足如下几点,就可以开展UI自动化测试:
1、需求稳定,不会频繁变更
UI自动化测试最大的挑战就是需求和UI频繁变化,脚本需要修改、扩展去适应新的改动,如果频繁修改会导致投入产出比太低,那么UI自动化测试也失去了其价值和意义。
折中的做法是选择相对稳定的模块和功能进行自动化测试,变动较大、需求变更较频繁的部分手动回归。
2、多平台运行,组合遍历型、大量的重复任务
测试数据、测试用例、自动化脚本的重用性和移植性较强,降低成本,提高效率和价值。
3、软件维护周期长,有生命力
UI自动化测试的需求稳定性要求、自动化框架的设计、脚本开发与调试均需要时间,这其实也是一个软件开发过程,如果项目周期较短,没有足够的时间去支持这一过程,那自动化测试也就不需要了。
4、被测系统UI设计较为规范,可测试性强
主要出于这几点考虑:被测试系统UI差异、测试工具适应性、测试人员能力能否快速上手并落地;
从测试分层金字塔模型来说,API自动化测试是综合性价比最高的一种测试手段。在设计case时可遵循如下顺序:
单元测试(unit testing),是指对软件中的最小可测试单元进行检查验证,最初都是由开发来完成,即保障自己所在环节的交付产出物满足进入下一阶段的标准。
关于单元测试,我的观点是测试需要介入这个环节,尽可能早的去测试验证发现问题,但并不表示测试需要在这个环节什么都自己来做。在设计单元测试case和执行方面,可以考虑如下几点:
更多内容,大家可以参考我前面的文章《测试需要做单元测试吗?》。
由简到难,适可而止
不同维度的自动化测试case设计和实施,都是覆盖范围越大/粒度越小,投入成本越大,这是个边际递减的问题。
现在很多企业都提倡研发效能和快速迭代,这种时候就不能慢工出细活了,要考虑如何以更小的投入和更快的速度完成核心场景覆盖,达到快速验证的目的,不要太过于追求所谓的覆盖率和case数量等度量指标。
切记不要面向质量度量和KPI搞自动化测试,这样容易捡了芝麻丢了西瓜。
可观察,可验证,可度量
在设计自动化测试case时还应注意这三点:
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取