• 0
  • 0
分享
  • 项目上线出Bug!为什么你作为测试没测出来?——软件测试圈
  • 曼倩诙谐 2023-04-07 11:22:29 字数 1734 阅读 1351 收藏 0

  材料收集

  你服务于一个数据库查询业务,某次客户现场反馈查询某个语句长时间未返回结果,耗时已经远远超过项目对外提供的性能报告承诺给用户最长查询时间。

  问题和相关日志已经传递回来,开发人员进行原因分析和故障修复,测试人员进行故障复盘和测试改进。

  这一切看起来都在正常的进行下去,但是作为测试人员的你是不是会不自主地冒出这么一句:为什么我没有测试出来呢?

  那么,为什么会没有测试出来呢?

  故障复盘

  “没有测试出来”剖析最根本的原因无非可能有两点:

  1、缺少对应的测试用例;

  2、具有相应的测试用例,但测试环境与客户现场相差太大。

  那么,你可能还会继续问自己:为什么会缺少对应的测试用例呢?

  缺少对应的测试用例

  至于测试用例的缺失,从客户需求——>需求方案设计——>开发方案设计——>开发实现——>需求测试——>需求交付。

  整个流程来看:缺失相应使用场景的客户需求,或者需求方案设计有误,或者开发方案设计有误,或者开发实现偏差等等都可能导致测试人员在设计测试用例时,缺少相应用例的设计和测试执行,从而未能发现类似故障。

  除此之外呢,有相应测试测试用例,还是因为测试环境与客户现场环境相差太大而未能发现类似故障。

  测试环境与客户现场相差太大

  为什么会存在测试环境与客户现场环境相差太大?

  就数据库查询业务而言。测试环境的数据存储量有可能遥遥不及真实用户环境,也可能测试环境的测试数据与真实数据不一样(比如某个存储字段的长度设置;比如存储的字段内容解析后包含特殊字符、乱码等等)……这些都是测试环境与客户现场不一致的可能情况。

  梳理完测试缺漏后,下一步理所当然的是进入用例补充和模拟客户环境稳定性测试。

  可是,除了补充当前故障对应的测试用例之外,我们还能延展些什么呢?!

  放大或复制用户行为

  不管是开发人员或测试人员,我们都应该珍惜接触现场日志的机会(当然首要的是需要保密不外传),因为我们可以从日志中窥探到用户使用习惯或产品使用方式,从而将这些行为或习惯复制到我们的测试用例中,亦或者在测试中放大用户行为或习惯。

  复制用户行为

  什么是复制用户行为?如何复制用户行为?

  复制用户行为在这里指的是,直接将获取到的用户使用产品方式在内部测试环境重现。比如:复现用户的某个数据库查询行为,select * from xx where ……

  但是值得注意的是:

  1)测试环境数据和真实用户环境可能存在较大的差异(比如:测试环境的数据库不存在某个字段abc,而真实用户行为查询却使用到了该字段abc),我们需要根据自己的测试环境进行适当的调整。

  就数据库查询业务为例,这类调整包括但不限于:删除不存在的字段查询,修改对应的字段值为测试环境的值查询……

  2)获取到的用户行为有限,无法支撑大量的查询比对(比如性能查询,统计数据库某类查询行为的耗时均值)。

  这个问题应该是可以预见的,毕竟我们能够接触到的用户日志或采集到的用户行为是有限的。

  尤其是针对第2)个问题,放大用户行为就成了我们的可选项。

  放大用户行为

  放大用户行为在这里指的是,将获取到的用户行为作为样本,复制多份或在用户行为中增删其他行为。

  比如:将select * from index where id=’123’的用户行为复制100份,替换其中的id值为测试环境中不同的值;或以select * from index where id=’123’为基础样本,增加行为数据如select * from index where id=’123’ or id=’456’等。

  复制或放大用户行为,对我们的测试有什么意义呢?!——可以让我们更接近用户的使用方式,产生更多的测试用例,扩大测试覆盖率。

  再来一点思考

  以上所说想必大多测试人员在工作中也是这样做的,但是可能缺少部分的思考和总结。现场反馈的问题和收集的资料对补充我们的测试用例、完善我们的测试工作具有很大的帮助,希望每一位测试人员都能好好利用能够接近“真实”的机会。



作者:刘晓佳Rachel    

来源:http://www.51testing.com/html/23/n-7795423.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   数据独立性是指测试数据在测试执行各阶段的完整性和一致性,不会受到其他任务执行结果的影响。测试执行时,会存在当前被测系统手工案例与自动化案例使用同一测试环境的测试数据问题,在手工测试执行过程中,对测试数据的增删改可能会影响到自动化案例的执行,导致自动化案例执行不通过。本文介绍一些常见的测试数据准备方法,保证手工测试和自动化测试的数据独立性。  一、建立独立的测试环境或数据库  手工测试和自动化测试采用不同的测试环境或数据库,是数据独立性较为简单的解决办法。如可以单独建立自动化测试环境与手工测试环境,测试执行过程中,自动化测试使用独立的自动化测试环境,手工测试采用手工测试环境。避免了手工测试和...
            0 0 764
            分享
          •   当一份工作严重占用你的休息时间、影响健康,我觉得这是一种不正常的现象。  纵使很多人都在坚持,但每个人都有选择的权力。当我有了宝宝之后,最大的期望就是她将来长大成人之后,能够从心而活。  在我面临这样的情况时,纠结了一段时间,最后还是选择了离开,当时的工资对我来说绝对算是一种诱惑,是我迄今为止领到最高的一次工资。  当天,办完离职后,整个人是放松的状态,没有焦虑,更多的是坦然。我想,那一刻我应该是女儿的榜样,我活成了我期望女儿成为的模样,  离职2天后,依然有需要工作交接的同事在微信里问我:“你离职了么,找到工作了啊?”  我说:“还没,先休息一段时间再说。”  "那你为什么离职...
            13 13 1288
            分享
          • 普通的移动app是需要安装的,但是绝大部分的app不会经常使用,但仍然会占用手机存储空间,所以开始出现免安装app,微信小程序实际是一种免安装的app。类似的比如华为、小米等手机厂商推出的快应用、支付宝小程序。微信小程序实际是运行在微信之上。小程序的类网页经过微信翻译之后以http数据的形式和服务器进行交互。小程序无法脱离微信来进行使用。微信小程序的页面可以包含:1、小程序页面(WXML+WXSS)2、M页页面(H5移动网页)3、toast信息(过一段时间会自动消失的信息,比如登录成功的提示信息,1、2秒后自动消失)4、弹窗微信小程序功能测试微信小程序分为三个版本:1、开发版2、体验版(需要在...
            0 5 8017
            分享
          • 常用的Android自动化测试框架包括UIAutomator、Appium以及Monkeyrunner等;其中,UIAutomator是谷歌在发布Android4.1版本时推出的一款基于Java语言的UI测试框架,由此,UIAutomator只能运行在4.1及其以上版本中。本篇文章将为大家介绍如何搭建基于Java+UIAutomator的测试环境。一、UIAutomator简介首先,作为Google自家推出的一款开源的UI自动化测试框架,其稳定性和可靠性可以得到极大的保障,运行时也有更多的权限。其次,UIAutomator可以跨进程操作,运行速度较快;但是UIAutomator不支持Andro...
            0 3 2955
            分享
          • 作为测试工程师,我们需要具备扎实的编程技能,能够熟练掌握至少一门编程语言。因为测试工作本身就需要编写测试脚本、开发自动化测试工具和测试框架等,这些工作离不开编程语言的支持。同时,编程语言的不断更新和变化也要求我们不断学习和提升。选择一门适合自己的编程语言学习,可以帮助我们更好地开展测试工作并提升自我竞争力。我们可以根据自己的工作需要和兴趣爱好,选择合适的编程语言进行学习。例如,如果我们需要进行Web自动化测试,那么就可以学习Java、Python等语言;如果需要进行移动端自动化测试,那么就可以学习kotlin、Swift等语言。选择合适的编程语言学习,有利于我们更快地掌握编程技能,更好地解决测...
            0 0 683
            分享
      • 51testing软件测试圈微信