自动测试基于Web的项目

Art*_*ger 8 testing automated-tests

最近我提出了一个问题是,花费开发时间为基于Web的项目生成自动单元测试是否值得?我的意思是它在某些时候似乎毫无用处,因为在某些时候这些项目是面向与用户/客户的交互,因此您无法预测整个可能的用户操作集,因此您可以检查显示的内容的正确性.甚至回归测试也很难完成.
因此,我非常渴望了解其他有经验的开发人员的意见.

Sch*_*ern 2

您无法预测整个可能的用户操作集,因此您可以检查所显示内容的正确性。

您无法预测您的代码将要传递的所有可能的数据,或者如果它是线程化的,则所有可能的竞争条件,但您仍然需要进行单元测试。为什么?因为你可以大大缩小范围。你可以预见将会发生的各种病态的事情。你只需要稍微思考一下并获得一些经验。

用户交互也不例外。用户会尝试做某些事情,无论是否病态,您都可以预见它们。用户只是输入特别富有想象力的数据。您会发现程序员往往会一次又一次地错过相同类型的条件。我保留了一份清单。例如:将 Unicode 融入到一切事物中;将开始日期放在结束日期之后;输入乱码数据;在所有东西上都贴上标签;去掉尾随的换行符;尝试输入相同的数据两次;提交表单,返回并再次提交;获取一个文本文件,将其命名为 foo.jpg 并尝试将其作为图片上传。你甚至可以编写一个程序来随机翻转开关和按钮,一只坏猴子,它会发现各种有趣的错误。

它通常很简单,只需让不熟悉该软件的人坐下来观察他们使用它即可。抑制住纠正它们的冲动,只是看着它们挣扎。它非常有教育意义。Steve Krug 将此称为“高级常识”,并且有一本名为“Don't Make Me Think”的优秀书籍,其中涵盖了廉价、简单的用户交互测试。我强烈推荐它。这是一本非常简短且令人大开眼界的读物。

最后,如果客户的期望得到适当的准备,客户本身可以成为一个出色的测试套件。确保他们了解这是一项正在进行的工作,它会有错误,他们正在帮助改进他们的产品,并且它绝对不应该用于生产数据,并让他们修补预发布版本你的产品。他们会做各种你想不到的事情!它们将是您曾经拥有过的最好、最真实的测试,而且是免费的!为他们提供一种非常简单的方法来报告错误,最好只是应用程序上的一个按钮框,自动提交他们的环境和历史记录;Hiveminder上的反馈框就是一个很好的例子。快速而有礼貌地回应他们的错误(即使只是“感谢您提供的信息”),您会发现他们会很高兴您对他们的需求做出了如此积极的回应!