基本上,我想知道是否有人有任何提示可以确保您的代码经过很好的测试,而无需在有限的时间范围内获得其他任何人的帮助?

过去,我一直能够找到其他人可以在我的代码上进行测试,或者有一个专门的质量保证团队来解决所有问题,并找到所有错误。

我通常非常小心,但是我总是发现我想念的东西,当我测试它们时,我只是看不到它们。

但是,在我目前的工作中,我得到了两个PHP Web应用程序,以在非常有限的时间范围内编写,尽管我的反馈意见说这不是一个好主意,但我被告知我需要自己进行所有测试。

我想知道其他人以前是否有这个问题并可以提供一些见识?

我当时认为,在编码每个区域之前,也可以编写快速测试计划,并在进行测试之前仔细检查要求。

有帮助吗?

解决方案

当然,无论是否首先测试,单位测试都应该是您的第一道防线,以确保您的每个申请书都按照您的想法工作。但是,您正在谈论的测试类型(在这里有帮助的是在接受测试领域)可能会有所帮助。它适用于各种怪异的场景或行为吗?

一种有用的方法是想象角色:首先测试应用程序,但然后再次对其进行测试,以想象您已经85岁了,看不到非常好,并且不使用鼠标很好。假设您应该做的是,您可能会单击最亮或最大的事情,这可能不是。现在想象一下您12岁,急忙催泪。您无法阅读说明。它仍然有效吗?

对于任何给定的字段,一个人可能输入的内容是什么?如果您仅键入空格会发生什么?只有数字进入文本字段?如果您键入HTML会发生什么? JavaScript?非西方字母中的东西?如果您键入真的很长的东西怎么办?

关键不仅是测试“快乐路径”,用户在其中按照您的想法进行了应用程序。以任何人不应该的方式浏览应用程序。因为...他们会。

另一个重要的东西是不要忽略任何东西。很容易出现一个怪异的屏幕对自己说:“哦,这只是一种fl幸。”您必须让自己注意到并追踪不仅应有的一切。

其他提示

关于您可以进行多少测试,总是有限制。在约束中,您显然需要构建测试。显然,您想首先为最关键的领域构建测试(安全性,损坏的可能性,数据丢失,功能)。

除了功能规范外,您不太可能获得大量的手动帮助来确定测试内容。但是您可以以测试覆盖工具的形式获得自动帮助。这些工具告诉您您已测试了哪些代码,因此您尚未测试的代码。通过检查未经测试的代码,您可以确定它是否或多或少是关键的,因此或多或少应在发布之前对其进行编码。测试覆盖工具还告诉您测试代码与总代码的比率,以及它是确保该比率为70%或更高的行业最佳实践。您可以使用这些数据来通过简单的技巧与老板协商更多的时间:“我们只有15%的测试覆盖范围……敢释放它吗?”

可以在此处找到与PHP一起使用的测试覆盖工具:语义设计PHP测试覆盖工具

我认为TDD正是您想要的。首先编写测试,然后编写通过测试的代码。除了您之外,您不需要其他任何人(不过,建议对测试进行一些帮助),即使在开始进行编码之前,您也会更清楚地了解该工具应该做什么。

http://en.wikipedia.org/wiki/test-driven_development

您的雇主显然认为测试并不重要。您应该辞职并找到合适的工作。

我讨厌这么说,但我认为在您的情况下,Alex Tingle的权利。这是不可能的情况。

Jacobm和Santi在提及单位测试,接受测试和测试驱动的开发方面是正确的。我将在该列表中添加代码覆盖范围和静态分析工具。

但是,尽管TDD或基本单元测试通常会在减少的测试时间下降,缺陷率降低和易于维护时获得回报,但它们不会帮助您在死亡中准时交付。如果您没有编写自动测试,则尤其如此。

礼貌地说,您的老板要求您承担技术债务。正确地说,他要求您无视职业道德。

微笑,说“是的,先生”,在分配的时间里尽力而为,然后更新简历。

要记住的一件事是,开发人员自然倾向于测试其代码的“最佳路径”。换句话说,您写了它,因此您知道您应该单击某些斑点,输入某些东西,因此您对此进行了测试。当然,这很重要。

这里有一些好的建议,但是大多数(但并非全部)似乎错过的一个是负面测试。基本上,您需要测试边界,并且需要测试恶意。如前所述,将脚本代码放在诸如:

<script>alert('abc')</script>

很明显,如果您获得警报,您无法正确编码!另一件事是:

abc' or 'a' = 'a'

这可能会显示出身份验证等事物中的SQL注入问题。您还可以用以下方式测试SQL注射。

abc'; drop table users; select * from dual where 'a' = '

如果您的桌子刚离开,您会有问题!有很多示例,但至少您需要花一些时间测试OWASP前十名。

您要测试的其他地方是很大的数字,尤其是在32位平台上的整数输入,负值,无值等时。基本上,测试所需的流量是否有效,然后尽一切可能破坏它。

我同意以前关于测试驱动开发和单元测试的价值和有效性的答案。如果正确完成,则在编写生产/可交付代码之前编写单元测试的TDD过程将有助于保持焦点并帮助验证您的设计和接口。此外,其他开发人员将能够以非常直截了当的方式使用和消费代码的清晰,一致的工作方式。请记住,单位测试不是相同的,并且不能代替完整的集成测试。在这种方法中,您可能仍然需要编写完整的集成测试计划。

我在.NET中工作Primarliy,除了与Nunit合作外,什么都没有。

我以前从未在PHP中工作,但是据我所知,您可能想考虑 最简单 或phpunit。

鉴于老板的要求,您必须在为他工作时尊重,直到您改变主意为止,您在问题中给出了正确的答案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top