如何在AutoCar中进行测试:MindMap,静态代码分析和MockServer

你好 我想告诉您测试如何在VIN的汽车检查服务Autotech项目中进行的。 最重要的是-有关我们用于测试需求的工具,冲刺计划以及项目中测试过程的工作方式。



MindMap用于修饰任务


我们在Auto Center中使用scrum,因为这是完成任务的最成功方法。 每周,我们都会举行会议,确定优先级,确定复杂性,从待办事项中分解任务,并为每个任务设置“就绪定义”和“完成定义”(您可以在这篇精彩的文章中了解它们)。 此过程称为积压整理。

为了有效整理,必须考虑所有依赖项。 知道任务的执行如何会对项目产生负面影响。 了解您需要支持哪些功能以及削减哪些功能。 也许在执行任务的过程中,合作伙伴的API可能会遭受损失,或者您只需要记住实施一些度量标准就可以理解业务效率。 随着任何项目的发展,这样的依赖关系越来越多,将它们考虑在内变得越来越困难。 这很糟糕:支持团队必须及时了解所有功能,这一点很重要。 有时,创新需要与市场部门协调。

结果,我提出了一个基于MindMap的解决方案,该解决方案反映了几乎所有可能影响DoD,DoR和任务评估的依赖项。



这种方法的优点是以可视化方式表示了所有可能的依赖关系,并以图标,文本选择和多色分支的形式出现了其他包子。 整个团队都可以访问此MindMap,使您可以使地图保持最新状态。 我铺开了这样一张卡片的空白,可以当作地标,这里是 。 (我将立即保留这仅是一个准则,并且在不完成项目的情况下使用此卡完成任务非常可疑。)

Go的Linty和静态代码分析



在我们的项目中,使用了大量的golang代码,并且为了使代码风格符合某些标准,决定采用静态代码分析。 关于它是什么,在哈布雷(Habré)上有一篇很棒的文章
我们希望将分析器集成到CI流程中,以便在项目的每个构建中启动分析器,并根据验证结果,构建继续进行或因错误而崩溃。 通常,在Teamcity中使用gometalinter作为单独的构建步骤将是一个很好的解决方案,但是查看构建日志中的错误不是很方便。
我们继续搜索并找到 Artemy Flaker Ryabinkov作为Avito hackathon的一部分开发的Linty Bot。



这是一个可以在我们的版本控制系统中监视项目代码并在每次请求请求时启动差异代码分析器的机器人。 如果分析期间发生错误,则漫游器会将对此PR的注释发送到所需的代码行。 它的优点是与项目的连接速度,工作速度,对拉取请求的注释以及使用颇受欢迎的Gometalinter linter(默认情况下已经包含所有必要的检查)的使用。

MockServer以及如何获取服务以提供所需的东西


图片

下一部分是关于测试稳定性的。 汽车经销商非常依赖数据源(它们来自经销商,政府服务,服务站,保险公司和其他合作伙伴),但是其不可操作性不能成为拒绝进行测试的基础。

我们必须从工作源和不可操作性方面检查报告的组合。 直到最近,我们还是在开发环境中使用了真实的数据源,因此,它们取决于状态。 原来,我们在UI测试中间接检查了这些源。 结果,他们的不稳定测试随数据源一起下降,并等待对数据源的调查,这对自动测试的通过速度没有任何帮助。

我有一个想法来编写自己的模拟程序,从而替代Autotech的资源。 但是最后,找到了一个更简单的解决方案-现成的MockServer ,这是Java的开源开发。

其工作原理:

  • 创造期望
  • 匹配传入的请求,
  • 如果找到匹配项,请发送回复。

使用Java客户端创建等待的示例:

new MockServerClient("localhost", 1080) .when( request() .withMethod("POST") .withPath("/login") .withBody("{username: 'foo', password: 'bar'}") ) .respond( response() .withStatusCode(302) .withCookie( "sessionId", "2By8LOhBmaW5nZXJwcmludCIlMDAzMW" ) .withHeader( "Location", "https://www.mock-server.com" ) ); 

从示例中可以看到,我们描述了我们将发送的请求和希望接收的响应。 MockServer接收请求,尝试将其与创建的请求进行比较,如果存在匹配项,则返回响应。 如果请求没有失败,我们将得到404。

对于MockServer,有Java和JavaScript客户端,出色的文档和使用示例。 可以在RegExp上匹配请求,在服务器上进行详细日志记录以及一堆芯片。 对于我们的需求,它是理想的候选人。 该站点上详细描述了启动过程,因此在这里重新启动它没有意义。 唯一的时刻是,最新版本泄漏了很多内存,因此我们使用版本5.2.3。 小心点 另一个缺点是Mockserver没有开箱即用的SOAP支持。

目前,MockServer已经与我们合作了大约三个月。 结果,测试的稳定性,测试的执行速度以及在开发环境中接收任何数据的能力都得到了提高。 因此,有更多的测试机会。

结语


这些技术是我在本文中要谈论的主要内容。 否则,我们将使用常用的测试工具:使用Kotlin + JUnit + RestAssured,Postman捆绑包进行API测试,以方便访问API。 在这篇评论文章中,我没有谈论我们的UI测试方法。 我们使用MBT和graphwalker 。 我们正计划与同事就此发表一篇文章。

如果您有任何疑问,请在评论中提问,我将尽力回答。 我希望本文对开发团队有用。 (顺便说一下,在她为发布做准备的同时, QA开发人员的工作出现在我们的团队中,向那些可能对此感兴趣的人展示)。

Source: https://habr.com/ru/post/zh-CN437952/


All Articles