• 11
  • 12
分享

  随着开发的逐渐深入,从节省时间、资源和提高测试效率的角度来说,自动化用例必然会成为一个大众型选择。并且,几乎大大小小的软件公司,都在朝着测试自动化的脚步迈进。

  那么,我们应该如何有效地利用自动化测试结果挖掘问题,或者说如何通过自动化测试结果分析出一些问题呢?当然,这里的问题不全指代码故障,也可能包括测试脚本问题。

  首先,让我们来看看,软件公司常用的将自动化测试嵌入开发流程方法。提及此,不得不提到DevOps(开发运营一体化)。

  传统DevOps流程包括:设计——>开发——>测试——>部署,如下图所示。

1-1.png

  构建DevOps流程需要一个持续化集成工具,如Jenkins,被多数公司青睐。

  那么,我们如何使用Jenkins工具将自动化测试嵌入DevOps流程呢?

  简单讲述下,Jenkins配置自动化测试嵌入DevOps流程的几个关键点和常见问题。

  配置参数

  你需要配置测试所需的、外部控制的一些参数,比如:测试环境地址。

  通过Jenkins的“This project is parameterized”配置项设定,配置完成后可改变该测试项目的启动参数,样例如下图所示:

1-2.png

  设定定时或触发机制

  你需要设定一个定时或触发自动化测试的机制,在DevOps流程中,测试在开发环节之后。

  而持续集成实践中,往往设计开发代码变动就触发回归测试或定时进行自动化测试,因此可通过Jenkins设置自动化测试触发机制为Jenkins项目触发(通过Build after other projects are built设置)或定时触发(通过Build periodically设置)。

  样例如下图所示:

1-3.png

  启动测试用例

  你需要设置启动测试用例的脚本或命令,启动测试用例是DevOps测试环节的关键步骤,在Jenkins工具里。

  可通过Command配置项进行设定,样例如下图所示:

1-4.png

  如此这般关键配置完成后,你就可以触发Jenkins测试项目运行,坐等测试结果了。

  接着,让我们来分析一下自动化测试结果吧。

  分析结果

  从执行结果来说,测试用例运行结果无非两种情况:通过或失败。

  作为测试人员来说,往往更关注的是失败的测试用例。因为,失败的测试用例往往隐藏着一些不可知的问题。

  那么,这些问题都可能有什么呢?我们把测试用例失败的问题大致分为两类:开发代码问题或非开发代码问题:

  开发代码问题指的是程序功能与预期不一致导致的问题,即通常所说的代码bug;

  非开发代码问题又可分为运行环境问题和测试代码问题(如下图所示)。

1-5.png

  让我们来看看,如何利用自动化测试结果分析测试中发现的问题(开发代码问题、环境问题和测试代码问题)。

  问题分析

  作为测试人员,当我们不好判断是不是属于开发代码问题的时候,我们可以从我们熟悉的领域入手,先判断是不是属于环境问题和测试代码问题。如果都不属于这两类的时候,我们就可以收集证据,将问题提交给开发人员分析。

  测试代码问题分析

  测试代码问题细分来说有:测试流程设计问题,测试脚本错误。

  测试设计不合理问题主要有测试脚本中测试步骤设计不合理的问题和测试用例互相依赖的问题。

  如:测试某个应用删除接口,期望删除a服务成功。

  但是在脚本测试步骤设计过时,缺少对待删除a服务已存在的校验,导致直接使用删除接口删除a服务报错a服务不存在的问题。

  测试脚本错误主要在于测试人员开发测试代码时引入的错误,如:缺少参数、传参错误、函数引用错误、断言错误等等。

  环境问题分析

  通过测试用例执行结果报告,有的问题属于环境问题可以一目了然,如:环境资源告警、缺少测试用例需要的python或jdk环境配置等。

  但也有的属于需要进一步分析的问题,如:被测程序网络抖动,内存释放不及导致的内存越界等等。

  对于第二种情况,常见的特征是:用例并非稳定失败,可能在其他时间段运行时用例结果为通过。

  开发代码问题

  排除了测试代码问题和环境问题,我们就可以来分析失败的测试执行结果是否是由于开发代码问题引入的。

  通常情况下,当测试人员在对被测功能很了解、测试用例设计无误的情况下,能够很自信地判断失败的用例是否是代码问题引入的。

  如:同样是某个应用删除服务接口,前置条件是待删除服务存在,执行接口删除操作,期望服务删除成功。但结果是接口响应删除成功,但查询时显示服务残留了(不是被新注册的)。

  由此,你可以很自信地向开发人员提交Bug。

  但是,当测试人员无法确定失败的用例是由开发代码引入时(对于并发测试尤其常见),这个时候需要测试人员收集足够的信息,提交给开发人员分析。

  这些信息可以且应该包括:测试环境、测试方法、错误现象、复现频率以及相应的开发代码日志(如果可以获得的话)。

  最后,让我们来拓展下针对测试代码问题和环境问题进行测试用例层面的修正或规避方法,问题列表和处理建议如下表所示:

1-6.png

  通过对自动化测试用例执行结果的分析,能够帮我们梳理错误的类别和定位错误的原因,帮助测试人员优化测试脚本、提高测试脚本。

  更多的是能够过滤非开发代码问题,节省开发人员甄别错误的时间消耗。此外,对提高测试人员专业性也有助益。



作者:刘晓佳Rachel   

来源:http://www.51testing.com/html/02/n-5099502.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   一、Dynatrace简介  随着云技术应用的不断成熟,应用系统架构变得越来复杂,性能检测也愈发困难。单纯的检测交易响应时间、吞吐量和成功率不足以帮助开发人员快速定位到问题所在。所以,我们需要一种能够将业务流程与代码关联起来的测试方案,使每个流程的耗时可视化,使问题的定位更加简洁高效。  所以我们在性能测试工作中引入了Dynatrace。这个工具将人工智能技术引入监测过程,为管理微服务和以云计算为中心的应用的运营复杂性提供了全新的方式。用户安装一个代理,对每一个组件进行插桩、设定基线,并掌握用户环境的正常性能状况,代码级的深入分析能力能够分析层的技术依赖关系、识别环境异常,并找到性能问题的...
            14 14 3086
            分享
          •   虽然苹果公司错误地将iPad Air中的M2芯片列为 10 核 GPU 而不是 9 核 GPU,但它在MacBook Air发布会上和营销材料中宣称的性能是准确的。在提供给9to5Mac的一份声明中,苹果表示,它所分享的有关 iPad Air 性能的细节始终是基于9核GPU测算出的。  我们正在更新 Apple.com 以更正 M2 iPad Air 的核心数量。M2 iPad Air 的所有性能均准确无误,并基于 9 核 GPU。  苹果公司的网站称,M2 芯片&quo...
            0 0 547
            分享
          •   软件测试有35岁危机呢?先看下测试和开发在工作中有哪些不一样。  区别1、项目开发时,需要100个开发人员,项目研发结束后,只需要5个开发人员维护 ,开发的需求在开发前后有着剧烈的变化。但中国当前测试和开发之比,常常在1:8到1:10之间,不可能像开发一样,对人员的需求存在着如此剧烈变化。因此相对来说,测试工作的稳定性要远高于开发。  区别2、开发人员在工作中,会被多变的需求折磨疯了,所以我们在网上会经常看到产品经理和开相互撕逼的段子和故事。但软件测试是对已经开发好的产品进行测试,不会受到多变的需求方折磨。  区别3、开发经常白天被抓去开各种乱七八糟的会,然后只能晚上写代码。测试也可能会白...
            0 0 1732
            分享
          •   什么是软件测试?  软件测试是通过手动或自动方式运行或测量系统,以检查系统是否满足规定要求或找出预期结果与实际结果之间的差异的过程。  软件测试的作用是什么?  软件测试的作用相信大家都想知道,其实就是发现程序中的错误,保证软件质量,检查软件是否符合客户要求。所有这些都是其作用,但它们只是概括了软件测试的一般目的。比较软件开发、软件测试和客户需求的结合,软件测试的目的可以总结如下。  1.对于软件开发来说,软件测试通过发现问题和缺陷,帮助开发人员发现开发过程中的问题,包括软件开发模式、工具和技术上的问题和不足,从而预防下一个缺陷。  2.对于软件测试来说,用最少的人力、物力和时间来发现软件...
            0 0 868
            分享
          • 软件测试的分类:按阶段分可以分为:单元测试,集成测试,系统测试,验收测试;按是否运行程序划分可以分为:静态测试和动态测试;按是否查看代码划分:白盒测试,黑盒测试,灰盒测试;其中黑盒测试分为功能测试(界面测试,业务逻辑功能测试,兼容性测试,易用性测试,安全性测试,安装测试)和性能测试(性能测试,负载测试,压力测试,容量测试,并发测试,配置测试,可靠性测试,失败测试)其他:回归测试,冒烟测试,随机测试黑盒测试:白盒测试:是另一种软件测试的主要方法,又称为结构测试,逻辑驱动测试或基于程序本身的测试,他着重于程序的内部结构及算法。白盒测试一般是以单元或模块为基础的。白盒测试的主要方法包括:语句覆盖:使...
            0 0 1069
            分享
      • 51testing软件测试圈微信