• 0
  • 0
分享
  • 做合格管理人:从测试流程角度思考产品质量——软件测试圈
  • 曼倩诙谐 2023-01-17 09:31:50 字数 2604 阅读 1199 收藏 0

  两个熟悉的场景:

  ·生产环境出现问题,解决问题,原因复盘、责任分配到人;

  · 无休止的测试-回归-再测试-再回归测试,已经投入了很大精力,但仍对项目质量不信心;

  如果自己所负责或参与的项目经常遇到上面的两种情况,不妨从项目测试流程角度,去思考原因以及破开瓶颈的方法。

  测试流程拆解

1-1.jpg

  需求评审

  通过参与技术设计评审,可以为测试方案提供依据。例如:核心业务是否需要接口测试、新老数据兼容问题、测试场景的数据构造以及测试所需的工具等,都可以在这个阶段进行思考和产出。

  另外,可以有效的评估需求影响范围和风险点,避免遗漏。

  此阶段是质量的基石,通过测试左移,尽早发现需求设计缺陷、技术方案风险、关联方依赖影响等方面,了解测试关注点,需求可测试性以及预留排期等问题。

  举例:

  接口测试:权益核销&&退款,接口都需要对前端传入的参数进行校验。

  新老数据兼容,比如说小程序的发版,一般会滞后于接口发布,一定要测试旧版本的兼容性。

  测试方案设计

  测试用例设计:需要从整体入手,而不仅仅局限于待测功能本身的业务逻辑。好的测试用例,是质量保证的核心。

  测试用例评审:避免三方需求不一致,减少测试执行阶段做无效工作,如执行无效用例、提交无效BUG等。

  测试数据准备。

  此阶段是质量的骨架,通过测试设计,覆盖更多的测试点、模拟更多的场景、做好更充分的测试准备,为质量保驾护航,为测试赢得更多宝贵的时间。

  测试用例这一步不能忽略,即使改动很小,排期很紧,也建议要画出思维导图;要想提高测试用例设计能力,就需要平时就要多积累,对常见的缺陷模式、典型的错误类型以及遇到过的缺陷,要不断地总结、归纳,才能逐渐形成体系化的用例设计思维。

  同时,对于高质量的测试活动,用例设计不仅需要考虑明确的显式功能性需求,还要涉及兼容性、安全性和性能等一系列的非功能性需求。

  好的测试用例是如何定义的?

  不应该从是否能发现BUG的维度去定义,而是应该从集合的完备性角度去思考,也就是测试用例是否能够覆盖所有等价类以及各种边界值为维度去衡量。

  如果把被测系统看作一个池塘,BUG是池塘中的鱼,设计测试用例集的过程就像是在编织一张捕渔网。好的用例集就是一张能够覆盖整个池塘的大渔网,只要池塘里有鱼,这个大渔网就一定能把鱼给捞上来。如果渔网本身是完整的且合格的,那么捞不到鱼,就证明池塘中没有鱼,而渔网的好坏与池塘中是否有鱼无关。渔网眼就是测试用例的粒度,粒度越大,意味着网眼越大,这就只能捕捞大鱼,一些小鱼就会漏网。这也是一些项目通用的现状,测试活动由于受限于时间成本和经济成本,只能采用基于风险驱动的模式,选择合适的测试粒度,即有所侧重地选择测试范围和设计测试用例,以寻求缺陷风险和研发成本之间的平衡。

  整体完备性:“好的”测试用例一定是一个完备的整体,是有效测试用例组成的集合,能够完全覆盖测试需求;

  等价类划分的准确性:指的是对于每个等价类都能保证只要其中一个输入测试通过,同子集下其他输入也一定测试通过;

  等价类集合的完备性:需要保证所有可能的边界值和边界条件都已经正确识别。做到了以上三点,就可以肯定测试是充分且完备的,即做到了完整的测试需求覆盖。

  线下测试(含灰度)

  横向覆盖:对于一个场景,从开始到结束涉及到的关键节点,都要进行检查点覆盖,包括功能实现、数据读取、数据计算、数据写入等的正确性;

  纵向覆盖:正常场景、异常场景、补偿场景都要覆盖;

  探索性测试:凭个人经验进行探索性测试;

  回归测试:拉取回归测试集,手动测试和自动化测试相结合,在测试环境验证新功能对原有功能是否产生影响;

  此阶段是质量的成型,通过测试设计的充分准备、线下测试的严格、立体的执行,发现和解决绝大部分问题。

  探索性测试

  根据需求描述来设计最初的测试用例,然后执行测试;在执行过程中,如果得到的输出和预期输出不完全一致,于是会猜测这种不一致是否可能是软件的缺陷造成的;为了验证想法,你会根据错误输出,设计新的测试用例,然后采用不同的输入再次检查软输出。经过几轮这样的猜测和验证,进行反复“探索”,最终确定了一个软件的缺陷。

  而识别缺陷的思路和测试用例的设计,并没有出现在最初的测试设计和测试用例文档中。探索性测试是一种测试风格,并且强调依据当前项目上下文选择最适合的测试技术。同样的测试风格,由不同的人来具体执行,得到的结果可能会差别巨大,一直强调测试分析能力是最重要的技能。

  线上测试

  回归测试:拉取线上回归测试集,并结合自动化测试,保证核心流程测试通过;

  新功能测试:拉取新功能快速验证测试集,并确保覆盖新功能核心测试点;

  此阶段是版本质量终态,线上测试主要是为了确保代码部署、生产配置、生产环境对质量的影响。

  测试复盘

  在发布上线后,对测试过程进行复盘,总结遇到的问题,对当时的解决方案进行探讨。通过复盘,从而达到指导后续工作,减少重复踩坑。并在可以在个人复盘完成后,在部门内进行信息共享。每个人负责的项目虽然不同,但是测试思想确有共通之处。通过复盘分享,可以有效提升团队整体测试经验。

  此阶段是测试经验累积阶段,也是容易被忽略的阶段。通过信息共享,大大降低重复踩坑的概率。

  线上监控

  通过选取业务流程中优先级高的测试用例,作为心跳测试用例定时运行,并持续进行补充完善。

  接口测试用例的开发进度落后于新功能的发布节点。自动化不是跟着新需求走,而是测变化的东西对不变东西的影响。

  此阶段是测试活动右移,质量补偿,快速响应和解决,降低生产事故造成的损失。

  总结

  通过规范测试流程,全覆盖产品生命周期,量化测试产出,在有限测试资源下的提升产出;

  推动力是衡量测试角色能力的重要指标,特别是一些需求不明确的项目,在各个阶段都要保证信息在团队成员间的一致性。

  目前的不足之处:

  测试用例评审流程:邮件or会议, 需要产研给出积极响应;

  测试各阶段的准入准出条件模糊:进入测试、进入开发,要有基本的要求,一环连着一环,在某些阶段确实可以加入一些提交基线,比如进入测试阶段,之前增加提测基线(类似冒烟)。

  技术沉淀不足,异常场景模拟依赖开发人员。


作者:Rethink    

来源:http://www.51testing.com/html/35/n-5099535.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   在正在举行的小米 SU7 北京车展发布会上,雷军公布了目前小米 SU7 购买者的一些数据。  雷军称,目前小米 SU7 女性购买者占比高达 28%,女性车主预计占比 40-50%;BBA 用户购买者占比 29%,苹果用户购买者占比 51.9%。  雷军还表示,小米 SU7 正在全力扩充产能,4 月 18 日标准版、Max 版开始交付,5 月底 Pro 版开始交付,6 月份月交付超过 1 万台。他透露,小米 SU7 今年交付目标 10 万台,今年销售门店覆盖 46 城 219 家,服务中心覆盖 86 城 143 家。作者:远洋原文链接:IT之家(ithome.com)
            0 0 716
            分享
          •   项目背景  系统有个Excel导入功能,需要通过Excel来构造测试数据,生成测试数据之后,上传Excel并导入验证。  如果数据验证出错,需要给出错误提示;如果数据校验通过,则执行导入操作。  我们主要通过Alibaba的Easy Excel框架来做。  期望的生成Excel数据模板如下:  生成了人员的工号、姓名、证件类型、身份证、民族等等字段。  这里我们使用java语言,用到的工具类如下:  java-faker  构造测试数据时,需要绞尽脑汁浪费时间,JavaFaker可以释放你的生产力。  easy-excel  easy-excel重写了poi对07版Excel的解析,能够原...
            15 15 1352
            分享
          • 在天网查上看了一下全国软件公司有1000多万家,其中上市的公司有7万多家,也就是占比0.7%通过这个数据可以发现,大部分公司从实力和规模上都偏向中型或者小型也就说其中的流程不一定很健全,设置没有流程而言。下图窃取了两张数据的图片供参考 为什么要指出这个问题,笔者目前在二线城市,工作10年经历过几家公司,很少有公司把流程指定的很正规和完善基本上的形式是 常规瀑布模式和敏捷模式 相结合,赶上功能已上线,出现Bug时  常见的状态开发快速定位问题进行修改测试抓紧时间进行测试,测完后上线发布 所以得出的结论是流程不重要,重要的是大家同心协力把问题解决,产品快速上线那么问题...
            0 0 1804
            分享
          •   据多位小伙伴反馈,支付宝于今日上午出现服务异常,付款时显示“支付失败”“交易创建失败”“服务异常”等。  此外,有网友称支付宝出现余额宝提现未到账、花呗还款扣款成功但账单没清等。  与此同时,“支付宝崩了”话题也出现在微博热搜。截至发文,支付宝官方暂未给出回应。作者:汪淼原文链接:IT之家(ithome.com)
            0 0 161
            分享
          • Python是一门非常简洁的语言,和c/c++,java等有着较大的差别。到list和tuple这儿有点犯迷糊了,就从这儿开始写起。目前做接触到的列表有4个,dicth和set,这篇文章就来看看这几种列表的特性和用法。一、python“数组”ListList是python内置的一种数据类型列表。在我看来有点类似于数组,但是深究下来却有很多不同。题外话:python和以往学过的编程语言最大的不同在于变量不用声明类型,也就是可以实现如下操作:a = 3 print(a) a = ‘s’ print(a)这样的操作在大多数在以前学过的三种语言种都是不合法的,但...
            14 14 4011
            分享
      • 51testing软件测试圈微信