Joomla 4测试代码冲刺科隆2018
测试代码是软件开发的重要组成部分,自动测试应确保持续开发不会破坏现有功能。因此,自动测试在我们的产品Joomla!的质量管理中非常重要。
Joomla! 4当前的测试情况并不理想,因为我们有许多未解决的问题,有些部分不能协同工作。因此,我们在科隆与自动化测试团队会面。感谢djumla GmbH,他们在办公室为我们提供了空间,使我们能够将成本保持在较低水平。我们只专注于使Joomla 4的测试工作顺利进行,并特别关注以下这些特定领域:
- 测试设置
- 单元测试
- 集成测试
- 系统测试
- 测试新的媒体管理器
- JavaScript测试
- 静态代码分析以查找安全问题
- 文档
测试设置
我们有一个混合设置。一部分在TravisCI上运行,另一部分使用自托管的Drone服务器作为持续集成系统。这里的目的是简化系统。现在Drone正在做所有重要的测试,因此要合并Pull Request,需要在Drone上通过测试。
我们仍在使用Travis,但只用于测试下一个PHP版本的Joomla。我们这样做是因为我们有点懒惰,Travis给我们提供了最新的PHP,而我们不需要进行任何交互。这个测试不是合并Pull Request所必需通过的。除了Drone和Travis之外,我们还使用AppVeyor在Windows上运行测试。
单元测试
去年,我们开始将测试分割开来。我们所谓的“单元测试”是真实单元测试和集成测试的混合体。区别在于单元测试不涉及其他应用程序的部分,如数据库,以使其工作。这些测试运行非常快,并仅测试Joomla的一个单独部分,使其与整体隔离。
我们创建了单独的存储库,将所有测试从主存储库中移出,并根据类型进行清理。这项工作已经完成单元测试,我们现在让这些测试在Drone和AppVeyor上针对PHP 7.0、7.1和7.2运行。
集成测试
这部分还没有重新集成。这里的主要问题之一是我们必须检查每个测试 - 而相当低的测试质量对这项任务构成了挑战。在过去,我们有这样一个要求,即提交代码和新功能的贡献者必须为其编写测试,而大多数情况下这项任务都是在最后完成的,人们对测试的经验不多,导致质量低下。
系统测试 / 测试新的媒体管理器
我们一直在为Joomla的系统测试工作很长时间。过去几年我们有多个GSOC项目创建这些测试,但遗憾的是,这些测试从未进入核心。
在这个冲刺中,我们终于将几个测试合并到核心中。我们正在测试安装,“com_content”,“com_category”,“com_users”以及新的媒体管理器。我们在这里还有更多的工作要做,但这是一个良好的起点。
JavaScript测试
由于这个领域的非常广泛的变化,我们重新开始了一个最小设置,以有一个起点。在旧的测试中使用了大量的jQuery,而在Joomla! 4中,团队移除了对jQuery的依赖,因此这需要完全重写。
静态代码分析以查找安全问题
德国公司RIPS开发了一个全面的工具,该工具能够通过代码库进行深入静态代码分析,发现各种安全问题。RIPS已经使用该工具发现了很多问题,并以专业的方式向安全团队报告了这些问题,因此使用他们的技术的益处是显而易见的。
因此,我们迈出了将分析工具集成到我们的持续测试过程中的第一步。RIPS提供了一个命令行工具,简化了这一过程,因此设置初始环境(将当前代码库推送到工具,获取结果)非常简单。Tobias和David在冲刺期间审查了第一组结果,以审查发现并标记误报。
冲刺后的下一步是将RIPS进一步集成到我们的CI工作流程中,特别是调整以适应我们运行不同代码库的多个分支(3.x,4.x)的事实,这将需要不同的误报列表。一旦解决这个问题,我们就可以出发了。
我们感谢RIPS提供的出色支持!他们对我们的开源项目的帮助非常受赞赏。
文档
每个开发者最不喜欢的部分,但也是重要的部分。
遗憾的是,我们没有太多的时间来改进这一点。但随着主要问题“Joomla 4的测试不断失败”的解决,我们将在接下来的几天内完成这项工作。所以当你读到这篇文章时,它应该已经完成了 :-)
结语
我们的目标是让测试设置重新运行,并支持人们在他们的编码工作中,而不是让他们困惑。所有测试现在都是绿色的,因此人们可以依赖测试结果。我们还添加了我们试图添加多年的东西。冲刺的氛围也非常好,工作变得有趣。
一些发表在Joomla社区杂志上的文章代表了作者对特定主题的个人意见或经验,可能不与Joomla项目的官方立场一致
通过接受,您将访问由https://magazine.joomla.net.cn/之外的第三方提供的服务
评论