JavaRush /Java 博客 /Random-ZH /面试测试如何变成开源库
Roman Beekeeper
第 35 级

面试测试如何变成开源库

已在 Random-ZH 群组中发布
大家好,JavaRush 社区! 自我介绍一下:自 2016 年春季以来,我一直担任 Java 软件工程师。我喜欢来这里解决我学习期间没有解决的问题。今天我给大家介绍一下这个库——图像比较。这是一个开源库,可在GitHub上公开获取。 面试测试任务如何变成开源库 - 1本文的目的是传达创建开源产品不仅仅是浪费时间,不!当你掌控整个开发过程,当你需要深入研究每一个细节时,这是从不同方面汲取的丰富经验。开源是您周围的世界。我不是开玩笑,在这个图书馆存在期间,我与来自不同国家的人们进行了交流,例如美国、印度、中国、埃及、俄罗斯、德国、乌克兰、瑞典、新西兰、挪威。也就是说,这是联合开发、寻找妥协、检查代码等等的真实经验。介绍就到这里了,现在让我们按顺序开始:

测试。2017 年 8 月开始

这一切都始于我接受了其中一家公司的面试,第一步是编写测试任务。任务是编写一个代码来比较两张相同大小的图片,找出它们之间的差异,将它们分组并在它们周围绘制一个矩形。有第一张图:
面试测试任务如何变成开源库 - 2
还有第二张图:
面试测试任务如何变成开源库 - 3
有必要找出差异并圈出它们,如下所示:
面试测试任务如何变成开源库 - 4
正如您所看到的,用户名字段存在差异,该字段用红色三角形圈出。更详细的任务描述。我决定不仅要从功能的角度正确地做到这一点,而且还要美观,这样就不会令人尴尬。为此,我决定将其作为项目发布在GitHub上。我一直想学习 GitHub 并获得使用它的经验。快速浏览后,我发现添加第三方服务来分析代码质量、通过测试生成代码覆盖率等会很好。添加了以下工具:
  • Codacy——代码质量。确实值得关注。

  • Travis CI是一个 CI(持续集成)工具,用于构建项目、运行测试并判断项目是否构建成功。例如,如果其中一项测试由于新更改而未通过,那么它会说项目构建不成功并将其标记为红色。

  • Coveralls是一个工具,可以显示测试覆盖了代码的百分比。

  • BetterCode Hub是另一个用于分析代码质量的工具。这是一个非常有用的东西,它不仅会告诉您什么是不好的,还会描述原因并提供一本书的链接,您可以在其中获得相关知识。

其中每项服务都有自己的带有数据结果的徽章,例如代码覆盖率项目。并且可以将这个徽章添加到项目的主要描述 - README 文件中。任务已准备就绪 - 我将其发送以供审核。审核后,我立即凭记忆为每条评论创建了一个 Github Issue,这将帮助我改进这个项目。雇主没有提出改进任务,所以我暂时忘记了这个项目......

库路径。2018年7月

标识

有一次,我发现人们经常访问我的项目,而且这种情况每天都会发生。我对此感到惊讶,更惊讶的是大约一年后创建了一个 ISSUE,其中写到某个图形设计师邀请我为我的项目创建一个徽标。他们说他喜欢为开源产品做这件事,并且完全免费。我们开始合作。提出了几个选项,但最终我们决定这样做:
面试测试任务如何变成开源库 - 5
那时我还年轻,对开源社区不熟悉,而且这样的提议对我来说很疯狂,我问,他为什么要这样做?他回答说:“哈哈,哦,只是因为我喜欢为开源项目做出贡献。有点人生目标……”(问题本身就在这里)。那是我第一次感受到当不同的人通过开源项目找到你并提供如此有趣的东西是多么伟大!

第一面缺陷

我注意到来自中国的某个开发人员为我创建了一个问题,他在其中描述了他发现该库工作中的一个缺陷,即如果使用大图像,则会出现StackOverflowError。该男子决定乘虚而入,发现了一个错误。我不仅找到了它。还写了关于她的事。这是图书馆发展的新举措。而且,我确实没有解决办法。在某个时刻,一位来自俄罗斯的测试人员提出了一个解决方案。但它是生的,制作不当,我不接受。当需要在 Maven Central 中发布该库时,有必要解决这个缺陷;我不想将它与它一起发布。另外,还有一个缺陷我一直没有修复,也带来了很多不便。

命令行使用。2018年秋季

开发的下一阶段是与瑞典人 (Renato Athaydes) 进行沟通,他希望通过命令行使用该库,为此有必要进行一些更改和添加。我再次对此感到惊讶和惊讶。平面设计师给我写信后,我的惊讶程度有所减轻,但仍然很高。一想到有人真的需要我的代码,我就充满了难以置信的感觉。他进行了必要的更改并准备了代码。我进行了代码审查,即查看了更改,有更改的注释以及更改已经在库中。我将这些更改指定为v2.0 版本。 下一步是将库添加到 Maven Central - 一个中央存储库,您可以从那里为任何项目下载它并将其用作依赖项。当时,我不知道如何执行此操作,即使是远程操作,所以我说我很忙,并请他执行设置该项目所需的所有步骤。但事实证明这根本不够,最有趣的是与 Maven Central 建立连接。这是一个巨大的痛苦,我第一次做不到,直到 4 月 15 日我才能够在 Maven Central 上发布该项目。这并不容易,但正如其他人喜欢说的那样,“每个想要发布 Java 代码的人都会经历这个。” 在发布该库之前,我终于找到了长期存在的缺陷是什么以及如何处理,并发布了新版本v2.0.2,其中我感谢所有帮助我的人,描述了我做了什么以及如何处理。

发布到 Maven Central。2019年春季

要正确发布库,您需要充分了解版本控制以及如何正确设置版本。我将坚持这个计划:
  • XX.YY.BBBB,其中XX为重大版本更新,其中包含与前一版本不兼容的更改(例如更改方法的返回结果);
  • YY是一个小更新 - 内部更改或扩展,不会改变BBBB 的内容- 这些是已修复的缺陷。
  • 例如,版本2.0.2表示主要版本为2,没有次要更新,并且有两次缺陷更新。
接下来,重要的是弄清楚如何正确设置groupIdartifactId。它们必须被选择一次并进一步使用。它们组成了存储代码的包。以前是:ua.comparison.image 现在是:com.github.romankh3.image.comparison 这显然更好,因为每个人都知道这是来自 GitHub 的项目,并且可以从昵称 romankh3 的人那里找到。当我完成这一切后,我发布了新版本v2.1.0

与瑞典人的交流。2019年5月

在我发布该库后,另一位瑞典人 (Mika Kytöläinen) 给我发电子邮件,要求他的朋友对我的库进行更改。他说他确实需要这个,如果我们能做到并且尽快做到,他会非常高兴。当然,我并不反对必要的改变。他建议添加绘制矩形的线宽配置。就像,对于那些视力不佳的人来说,这将是一个有用的改变。准备好代码了。添加了更多更改后,我发布了v2.2.0版本

与德国人的交流。2019年5月

此后,一位德国人提出了一个问题,他说他想用它进行测试,但它缺乏功能。他提出了很多非常有趣的建议,他建议不要只返回结果图片以及比较结果,而是返回一组数据:比较的内容、结果(如果需要)以及比较的状态。将是 MATCH、MISMATCH、SIZE_MISMATCH 。甚至做出了改变。但他们根本没有考虑到之前的代码,而且是仓促制定的。我拒绝了他们,并提出按照我认为合适的方式进行。尽管如此,他还是做出了更多的回应,我决定自己做并发布一个新版本。与此同时,Mika Kytöläinen 提出了另一个有趣的功能 - 添加不包含在比较中的区域。这是一个真实的案例。而这一切都在v3.0.0中发布

在实际项目中使用

五月底,一位来自基辅的自动化测试人员写信给我,他对这个库产生了兴趣,并希望在一个真正能赚钱的项目中使用它。这是一个突破!在宠物项目中的某个地方使用它是一回事,但在实际项目中使用它是完全不同的事情。我们讨论了它的工作原理和原理。该应用程序非常有趣:在他们的应用程序中,他们有打印的支票,并且有必要检查支票是否是根据特定模板创建的并且不会更改。但存在一个问题,即日期和时间等部分总是会发生变化,因此必须被忽略。我们已经添加了忽略某些区域的功能,但事实证明它对于实际使用来说仍然非常原始,而且我们仍然在这方面进行了数周的富有成效的合作。结果就是v3.1.1版本的发布

寻找利基市场

之后,我意识到我的库的真正利基是在测试中使用它。为此,我决定为测试人员找到某种论坛并向他们写信,以获得一些反馈并提高声誉。我找到了一个俄语论坛并在那里发表了一篇文章:测试图像的组织 - 两个相似图像的比较。在其中,我收到了有关代码和功能的真实反馈,我应用了这些反馈并发布了新版本v3.2.0,然后是v.3.3.0

现在

该库目前在 Github 上有 60 个 star,并有 33 个分支。我认为这非常酷,考虑到除了自动化论坛上的一篇文章之外我没有以任何方式推广它。感谢所有读到最后的人。事实上,这篇文章比我预期的要长得多。 关于如何将库发布到 Maven Central 的文章。 如果还有什么要补充的,就写吧!如果您有任何改进图书馆的建议,请写信!我会阅读所有内容并投入适当的时间。 任何喜欢这篇文章并认为它有用的人 - 对其进行评分并写在评论中。 另外,订阅我的 github 帐户romankh3 另请参阅我的其他文章:
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION