1

我有将近 2 年的时间开发和增强旧版 python Web 应用程序的“运气”。我认为我所做的主要贡献是介绍了单元测试、nosetest、pychecker 和 CI 服务器的使用。是的,没错,仍然有没有单一单元测试的项目(公平地说,它有一些 doctest,但是已经坏了)。

尽管如此,进展还是很缓慢,因为从字面上看,覆盖范围受到您可以编写的单元测试数量的限制。

时不时会出现令人尴尬的错误,而且在管理报告上看起来并不好。(例如,即使 pychecker 也无法捕捉到某些“缺少属性”的情况,并且程序在运行时就会崩溃)

我只是想知道是否有人对我可以做些什么来改进 QA 有任何建议。该应用程序使用 WebWare 0.8.1,但我已将其移植到cherrypy,因此我可以利用 WSGI 进行集成测试。

混合语言开发和/或雇用额外的测试员也是我正在考虑的选择。

没有什么太疯狂了,只要它有效。

4

5 回答 5

2

Feather 的好书是我一直向处于你这种情况的任何人推荐的第一个资源(希望我在前四次左右之前就已经掌握了它!-)——不是特定于 Python,而是很多非常有用的通用部分的建议。

我一直很满意的另一种技术是模糊测试——在捕获各种错误和漏洞方面,省力、巨大的回报;看看这个!

最后但并非最不重要的一点是,如果您确实有足够的人数和预算来再聘请一名工程师,请这样做,但请确保他或她是“测试中的软件工程师”,而不是一个温暖的身体敲打键盘或鼠标进行手动操作“测试”——一个渴望编写和集成各种自动化测试方法的人,而不是花时间无休止地重复(如果他们幸运的话)相同的手动测试序列!!!

我不确定你认为混合语言开发者不会在 QA 方面为你买单。WSGI OTOH将为您提供很好的瓶颈/钩子,以便在您即将推出的集成测试基础设施中加以利用——这对您有好处(也适用于各种其他事情;-)。

于 2009-07-10T05:44:14.893 回答
1

自动化测试似乎是一种非常有趣的方法。如果您正在开发网络应用程序,您可能会对 WebDriver 感兴趣http://code.google.com/p/webdriver/

于 2009-07-10T08:10:53.537 回答
1

由于它是一个网络应用程序,我想知道基于浏览器的测试是否对您有意义。如果是这样,请查看Selenium,这是一个开源的测试工具套件。以下是您可能感兴趣的一些项目:

  • 在主要平台(linux、win32、macos)上自动启动和停止浏览器实例
  • 通过模拟网页上的用户操作(点击、打字)进行测试,基于 Javascript
  • 使用行为结果的断言(加载的新网页,包含文本,...)
  • 可以在Firefox中记录交互式测试
  • 可以由 Python 测试脚本驱动,使用简单的通信 API 并针对协调服务器 (Selenium RC) 运行。
  • 可以在同一台机器或多台机器上运行多个浏览器

它有一个学习曲线,但特别是 Selenium RC 服务器架构对于进行自动浏览器测试非常有帮助。

于 2009-07-10T08:14:03.580 回答
0

看看Twill,它是一个用 Python 编写的无头 Web 浏览器,专门用于自动化测试。它可以记录和回放动作,也可以直接挂钩到 WSGI 堆栈。

于 2009-07-10T08:16:00.347 回答
0

很少有东西能像测试一样有帮助。

这两句话真的很重要。

  • “你有能力编写多少单元测试。”

  • “时不时还会出现令人尴尬的错误”

如果发生错误,则说明您没有编写足够的测试。如果您仍然有错误,那么您可以编写更多的单元测试。就是这么简单。

每个令人尴尬的错误都是没有编写足够的单元测试的直接结果。

每份描述令人尴尬的错误的管理报告还应描述需要进行哪些测试以防止该错误再次发生。

单元测试是对进一步问题的永久预防。

于 2009-07-10T10:09:11.910 回答