测试 Joomla!
问题:测试软件自软件问世以来一直是一个巨大的挑战。这其中的一个重要部分是简单的条件语句的数学。
为了简单起见,每个条件语句都会在程序中创建两个可能的执行路径。可能的路径数量大致是 2 的 n 次幂(2n),其中 n 是条件语句的数量。Joomla 有超过 12,000 个条件语句。这意味着理论上我们可以测试的 Joomla 组合数是荒谬的——任何人在 100 个生命中都没有时间完成。而且这还忽略了 Joomla 在各种操作系统环境(Linux、Windows、Apache、IIS、MySQL、SQL Server 等等)中运行的事实。总之,测试 Joomla 是一项艰巨的任务。
在你绝望之前,事情并不像看起来那么糟糕。例如,通过使用面向对象的设计原则编写 Joomla,我们降低了软件包不同部分之间的相互依赖性。从测试的角度来看,这意味着我们可以独立于其他部分测试程序中的许多部分。这大大减少了可能的测试用例数量。即使如此,我们仍然有比我们希望测试的更多的理论测试用例。
解决方案
鉴于无法测试所有可能的执行路径和环境,我们如何测试 Joomla 以使其尽可能没有错误?答案是,我们使用多种不同的测试策略。结合起来,这些提供了对所发布的 Joomla 版本将按广告宣传的方式工作的极高信心,以及一种持续改进的机制。
自动单元测试
单元测试是最科学的测试形式。在这里,我们编写测试程序来测试包中特定的代码行。Joomla 中的单元测试主要用于平台,其中每个程序都执行一个非常具体的低级任务。自动单元测试经常运行,并在编程更改导致测试失败时立即报告。当发生这种情况时,更改会被撤销,直到问题解决。这大大减少了更改导致新错误的机会。此外,当向平台添加新程序时,通常需要同时添加这些程序的自动测试。
通过单元测试,我们可以实际测量出正在被测试的代码行数。截至本文撰写时,有自动化单元测试覆盖了平台中大约40%的代码。志愿者程序员一直在忙于编写更多测试,这个数字预计将继续上升。单元测试是Joomla测试策略的重要组成部分,我们能以这种方式测试的代码越多,我们的bug就越少。
如果测试覆盖率达到了100%,这难道意味着我们将不再有bug吗?正如你可能猜测的那样,答案是否定的。即使我们测试了平台中的所有代码,测试中总是存在人为错误的空间。此外,即使平台程序按设计工作,程序有时也会存在导致bug的设计缺陷。还有,平台程序可能在Joomla的其他地方被错误使用。尽管如此,单元测试大大降低了bug出现的可能性。
自动化系统测试
Joomla中使用的另一种测试是自动化系统测试。这很容易理解。想象一下编写一本详细的测试说明手册,就像这样
- 转到文章管理器并点击新建。
- 输入一个名为“测试”的新文章,并将其分配到特色(主页)页面。
- 转到前端主页,确保文章在那里。
系统测试是遵循此类测试脚本的软件程序。系统测试不是由人来输入和点击,而是向浏览器发送模拟键盘敲击和鼠标点击来处理不同的使用场景。然后我们可以自动检查页面,以确保结果符合预期。
目前,我们有57个系统测试,大约需要40分钟才能运行并检查约3400个条件。这相当于一个人测试几个小时。系统测试每晚自动运行,并立即告诉我们最近的更改是否导致了问题。自从我们开始使用系统测试以来,它们已经证明在发布之前捕捉到许多bug非常有帮助。
按照目前的用法,Joomla中的系统测试并不试图测试每个使用场景或每个核心扩展。它们更多的是一种“现实检查”,以确保基本系统功能按预期工作。我们非常希望有更多的系统测试来测试更多的核心功能,并且更详细。这是一个我们可以使用帮助的地方,你不需要是一个超级经验丰富的程序员来编写系统测试。
bug测试
自动化单元和系统测试帮助我们预防在发布之前出现bug,并确保bug得到修复。然而,正如我们都知道的那样,任何软件包最重要的测试是当人们实际使用它的时候。这对于像Joomla这样的程序尤其如此,它被数百万个网站使用,通常是以程序设计师从未想象的方式。用户报告的bug对于维护和改进Joomla的质量至关重要。
当有人在Joomla中报告bug时,我们在问题跟踪器中创建一个问题。在将建议的bug修复应用到实际代码库之前,我们通常有两个(除了编写bug修复的人)测试该建议的修复是否正确无误,并且不会导致任何新的bug。具体如何进行取决于bug的性质。在某些情况下,如果问题复杂且可能在其他地方引起更多潜在问题,我们可能要求在做出更改之前进行更多测试。
理解这一点非常重要:这个过程只有在社区成员花时间报告错误的情况下才能生效。报告错误是Joomla用户可以为项目提供帮助的最简单但最重要的方式之一。如果错误没有被报告,几乎可以肯定它不会被修复。
另一个重要点是,错误小组始终需要更多帮助来测试错误。您不必是程序员才能加入错误小组。如果您是自信的Joomla用户,我们可以使用您的帮助。在任何时候,我们都有一大批待测试的拟议错误修复方案等待着有人来测试。如果您有兴趣帮忙,请通过以下邮箱联系我:
发布测试
当我们准备发布新的Joomla版本时,我们会进行一些特殊的发布测试。我们测试下载包和自动更新是否正常工作。我们还运行系统测试,以确保在构建包的过程中没有出现问题。这项测试通常由错误小组的志愿者来完成。
扩展测试
在理想的世界里,Joomla的更新永远不会与第三方扩展发生问题。然而,每当我们对Joomla核心进行更改时,都始终有可能导致扩展出现问题。理想情况下,扩展开发者应该定期检查他们的扩展是否在当前代码库上正确运行。这样,如果在更改中出现问题,就可以在发布前报告并修复。如果这不可行,第二种选择是在每次发布前几天创建的拟议发布包中测试扩展。
这是我们正在积极努力改进测试的领域。正在组建一个新的小组,专门用于测试第三方扩展的拟议发布。
您如何帮助?
Joomla是一个基于社区的项目。所有编码和测试都是由志愿者完成的。有许多方法可以帮助Joomla变得更好。以下是一些:
- 如果您发现了一个错误,请确保报告它。如果您不确定,请在支持论坛中发帖提问。
- 如果您是程序员并且对自动化测试感兴趣,请志愿帮助编写单元或系统测试。如果您不确定如何开始,请在一个Google小组中提问或发送电子邮件到
此邮箱地址已对垃圾邮件机器人进行保护。您需要启用JavaScript才能查看。 . - 如果您想帮助测试错误修复或发布,请发送电子邮件给我。记住,您不需要知道编程才能在错误小组中提供帮助。
正如我们所看到的,测试Joomla是一项庞大的工作,我们使用了许多不同的测试策略。许多帮助测试的志愿者使保持和提升Joomla的质量成为可能。我鼓励您加入这一努力。
《Joomla社区杂志》上发布的一些文章代表了作者对特定主题的个人观点或经验,可能并不与Joomla项目的官方立场一致
通过接受,您将访问由 https://magazine.joomla.net.cn/ 外部第三方提供的服务
评论