背景介绍
作为一个测试同学,提交bug是个绕不过去的坎(请不要杠哈,我真不太相信有测试同学从来未提交过bug)。
但是每次提交bug,少则几项多则几十项,填得有点头大有没有?即使有模板,根据模板再修改,手动填的时候也经常会漏掉一些项有没有?
所以为了我们这些懒人的福利,自动化提交bug就应运而生了。
测试需求分析
此自动化需求主要涉及到python/pytest,且需要jira API文档(下文有jira接口文档链接)。
测试流程
自动化脚本实现
bug模板及提交jira手工步骤
提完bug的bug模板参考下图:
创建bug时,参考下图,可以看见目前统一模板有如下10个必填项:
项目、问题类型、概要、优先级、严重程度、复现概率、bug分类、影响版本、模块、描述。
此处10个必填项对应后面jira接口的相应字段。
jira提交issue接口定义
createissue接口定义,baseurl参考公司网址,此接口的详细url为:/rest/api/2/issue,方法为method。
请求体参考下图的example、update字段,此处非必要,暂时忽略,我们步骤1中说的10个必填项都包含在fields字段中。
一般情况,每个字段可以通过id、name、key3个属性值来设置,但有些时候name属性不一定能找到(例如项目),所以建议首先用id和key,然而id有需要调用其他接口获取,无法直接从界面知道,所以可以首选key。
例如项目的key则为括号里的内容,参考下图,bug管理demo项目的项目key是BUGDEMO,
此点为本人调用其他接口观察到的,具体可以找atlassian官方确认咨询。
经过调用多方接口获得能成功调用的接口字段属性如下图:
summary、description此处暂不用特别关注,在后面步骤中我们将会使用捕捉到的内容进行替换。
更多jira接口文档详细参考:https://docs.atlassian.com/software/jira/docs/api/REST/8.5.5/#api/2/issue-createIssue
issue相关信息捕捉
版本及环境:面板机此处是调用获取设备状态信息的接口获取相关固件和算法等版本信息(作为setup调用一次即可):
项目:步骤2中已描述,此处不再赘述。
标题(summary)、详细描述(description)、附件的捕捉:
(1) 断言时描述详细信息(包括失败字段、预期结果和实际结果),例如下图:
(2) 加入hook函数pytest_runtest_make_report监听运行相关信息。
(3)对监听到的相关信息进行处理,title即为捕捉到的运行的测试用例标题,由于函数title为英文,可以再和中文标题一一映射一下。
description为运行时的详细输出,类似于下图:
out为调试日志写入到文件,后期作为附件上传,其内容主要是写用例时的日志输出,类似下图:
其中hook函数pytest_runtest_make_report 更多详细内容可参考pytest官方文档(上一节中有附件),日志输出可以参考logger模块或是各人的写日志模块。
通过以上步骤初步生成的bug如图:
注意,上传附件为另外一个接口:
脚本迭代优化
可以不用调用原始的jira接口,python中jira库中有封装常用的jira接口,如jira.create_issue等。
可能遇到的问题
捕捉信息可能需要在写自动化脚本的时候相关操作,都能断言实际和预期等详细信息。
附件中信息也需要自行控制输出。
如果bug系统非jira,可以自行找其bug系统的接口文档或其他提交bug操作。
总结
此方案及示例需要配合自身的自动化用例使用,否则手动操作后也无法自动捕捉其错误信息。
此方案的重点也是在捕捉错误信息,其他调用jira接口对于一个调包侠来说是基本操作,获取jira模板自行与pm商议即可,此方案如果上线到jenkins通过每日构建每天来run的话可能会出现大量重复的bug(由于开发解决bug没有那么快),多次后面会有文章来讨论如何解决此问题。
作者:jelly
来源:http://www.51testing.com/html/07/n-4480007.html