草庐IT

漫谈缺陷管理的自动化实践方案

爱测角 2023-03-28 原文

在《漫谈软件缺陷管理的实践》一文中,文章介绍了缺陷管理落地到实际工作中的一种形式。本文将分享其呈现效果的自动化实践方案。

一、自动化实践方案

缺陷管理的自动化实践可以分为四个步骤:设计数据指标、规范数据源、数据处理自动化和程序部署。

## 1. 设计数据指标 首先,我们需要设计缺陷相关的数据指标。这里,我们主要关注的指标有缺陷数量,缺陷处理进度和项目缺陷的多维度统计结果。同时,我们还可以设计缺陷相关指标的监控阈值。 ## 2. 规范数据源 其次,按照我们的数据指标,我们需要规范数据源,以保证我们能收到到我们想要的基础数据。如《漫谈软件缺陷管理》一文介绍,我们要定义好缺陷的状态、缺陷的流转逻辑和缺陷相关节点的负责人。 ## 3. 数据处理自动化 数据的自动化处理逻辑可以归纳为三个步骤:**首先通过程序自动获取基础数据,然后对数据进行逻辑处理,最后将处理后的数据转化为对应的消息数据**。 以Python为开发语言,如果缺陷平台允许通过后端接口直接获取缺陷数据,则可以引用Requests模块实现数据的获取,如果缺陷平台是服务端渲染且返回xml文档,那可以结合Selenium库采用UI自动化技术获取缺陷的基础数据。 缺陷数据的统计逻辑也可以大致分为三种:一种是求和,例如统计缺陷的总数;一种是求差,例如统计今日缺陷的变化数;另一种是求商,例如求各状态的缺陷占比。 对于消息的推送,其消息的形式可以是多样的,以钉钉App为例,我们可以在团队群新建Webhook自定义机器人,将缺陷数据转化为json格式的消息体,具体接入方式可查看钉钉开放平台的说明文档。
《漫谈软件缺陷管理的实践》_效果图

4. 程序部署

最后,我们部署程序并设置程序的执行周期。程序的部署环境可以是Windows系统,也可以是Linux系统。如果是Windows系统环境,可以设置Windows计划任务程序来控制程序的执行频率。如果是Linux系统环境,可以通过设置Crontab来控制程序的执行频率。以Python脚本实现为例,对于日常提醒的数据,我们可以设置每天某个时间执行,每次执行程序时就执行消息的推送。对于监控类任务,我们可以设置程序每分钟执行一次,在程序内增加推送消息的逻辑限制或者是时间点限制。

二、总结

相对于传统的人工整理统计和邮件汇报缺陷相关内容,结合IM即时通讯工具的自动化实践方案不仅解放了测试工程师的双手,也让项目的缺陷过程数据和项目质量数据更加透明化,并有效减少测试工程师莫名背“锅”的情况。**当然,避免背锅不是我们的唯一目的,更重要的是通过缺陷数据及早暴露项目风险,从而按时按质完成项目的交付**。

相关引文
《漫谈软件缺陷管理的实践》
《漫谈软件缺陷管理的价值》
《漫谈软件缺陷管理》
钉钉开放平台文档:《自定义机器人接入》

作者简介:Chaofan,爱测角成员之一,专注探索和分享软件质量保障。

有关漫谈缺陷管理的自动化实践方案的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  3. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  4. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  5. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  6. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  7. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  8. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  9. ruby-on-rails - ActiveRecord 的 find_or_create* 方法是否存在根本性缺陷? - 2

    有几种方法:first_or_create_by、find_or_create_by等,它们的工作原理是:与数据库对话以尝试找到我们想要的东西如果我们找不到,就自己做保存到数据库显然,并发调用这些方法可能会使两个线程都找不到它们想要的东西,并且在第3步中一个线程会意外失败。似乎更好的解决方案是,创建或查找即:提前在您的数据库中创建合理的唯一性约束。如果你想保存一些东西,就保存它如果有效,那就太好了。如果它因为RecordNotUnique异常而无法工作,它已经存在,太好了,加载它那么在什么情况下我想使用Rails内置的东西而不是我自己的(看起来更可靠)create_or_find?

  10. ruby-on-rails - Rails 中同一个类的多个关联的最佳实践? - 2

    我认为我的问题最好用一个例子来描述。假设我有一个名为“Thing”的简单模型,它有一些简单数据类型的属性。像...Thing-foo:string-goo:string-bar:int这并不难。数据库表将包含具有这三个属性的三列,我可以使用@thing.foo或@thing.bar之类的东西访问它们。但我要解决的问题是当“foo”或“goo”不再包含在简单数据类型中时会发生什么?假设foo和goo代表相同类型的对象。也就是说,它们都是“Whazit”的实例,只是数据不同。所以现在事情可能看起来像这样......Thing-bar:int但是现在有一个新的模型叫做“Whazit”,看起来

随机推荐