【问题标题】:Reducing the pain writing integration and system tests减少编写集成和系统测试的痛苦
【发布时间】:2011-02-13 11:55:03
【问题描述】:

我想为我的应用程序进行集成测试和系统测试,但生成良好的集成和系统测试通常需要付出很多努力,所以我没有费心。我尝试了几次,编写了自定义的、特定于应用程序的测试工具,每次都感觉像是在重新发明轮子。我想知道这是否是错误的方法。是否有“标准”方法进行集成和完整系统测试?

编辑:澄清一下,它是针对桌面和 Web 应用程序的自动化测试。理想情况下是一个完整的测试套件,可以练习应用程序的全部功能。

【问题讨论】:

    标签: java integration-testing system-testing


    【解决方案1】:

    如果“进行集成测试和系统测试”是指自动化测试,那么答案是否定的,没有标准方法。选择哪种方法取决于:

    • 应用程序的特征(例如,它是否有 GUI?它是只读的吗?它有多少外部依赖项等)
    • 您要测试的内容(也许您只需要 GUI 测试,或者相反,您并不真正关心 GUI,但内部逻辑很关键)
    • 您希望以多快的速度查看结果(例如,您存根越多,测试的速度就越快)
    • 您团队的技能组合

    就个人而言,我喜欢任何与 JUnit 集成的方法。 JUnit 是一个很棒的框架,它得到很好的支持,并且很容易与连续集成服务器绑定。以下是一些可能的方法:

    • Selenium 与 JUnit - 用于驱动 Web 应用程序的绝佳工具
    • Concordion - 适用于所有应用程序类型。与 JUnit 集成并允许简单的英语测试规范。您的“夹具”/测试代码将与规范中的关键词挂钩,并对它们进行断言或执行操作。
    • FEST - 对于 swing 应用程序,它再次与 JUnit 集成(看到主题了吗?;)(更多选择 here

    以上示例为测试提供了大量开箱即用的帮助。当然,它们仍然需要努力连接到您的应用程序并进行维护,但这些优势是值得的。除了上述之外,您可能还需要考虑如何对应用程序的区域进行存根或模拟。也许您想“在 GUI 下”或“在数据库之上”进行所有测试。在第一种情况下,您需要从代码中 GUI 与其交互的点开始测试,在后者中,您需要存根与数据库交互的服务。

    重要的是,有很多方法可以做到这一点。最好从非常清楚地了解您想从测试中得到什么开始。然后根据您想要测试的内容了解现有的框架可以帮助您,最后,不要试图在一夜之间征服世界。从小处着手,运行一些测试。获得绿色条(总是很高兴看到!)获得一个稳定的、经过验证的测试平台,并确保您对它感到满意。然后随着你的进展添加更多。

    【讨论】:

    • 谢谢。我已经对我们的一些产品进行了系统测试。我只是很惊讶这需要多长时间,以及它是多么困难。例如,获得原始状态(VMWare),执行测试。例如,您将如何验证安装程序/卸载程序是否正常运行?安装程序很常见,但很少支持自动验证它们是否按预期运行。
    • wrt 安装程序/卸载程序功能,您可以执行一个然后另一个,并验证您的机器的状态是否回到了它开始的位置。在这两者之间,您可以验证文件是否已被修改、目录是否已创建等。您还可以通过为每个文件交互(而不是进行交互)输出文本,然后验证该文本是否符合预期来消除安装程序的功能。这具有快速的附加优势。但是,是的,这是一个更棘手的情况。
    猜你喜欢
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 2018-11-24
    • 2016-07-25
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多