测试Joomla!
问题:测试软件自从软件出现以来一直是一个巨大的挑战。这其中的一个重要部分是简单的条件/结果语句的数学。
为了稍微简化一下,每个if语句都会在程序中创建两条可能的执行路径。可能的路径数量大约是2的n次方(2n),其中n是if语句的数量。Joomla有超过12,000个if语句。这意味着理论上我们可以为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/ 外部第三方提供的服务的服务
评论