已部署应用程序的自动测试

时间:2018-04-09 09:45:23

标签: java automated-tests

通常,一些用于自动化测试的测试框架(如Selenium)用于持续验证已部署应用程序的完整性。这些测试通常涵盖真实的用户场景,也可能结合使用一系列已部署的应用程序。

我们希望只为"后端实现相同的目标"应用程序 - 即没有前端的应用程序(或更确切地说)。我们目前正在构建一系列批处理工作,其中一个作业为下一个作业生成输入。

我们有一个很好的单元测试套件可以测试各个工作,但是我们真的想在部署到某些环境时测试一系列工作。

您对此类测试框架有什么建议吗?该框架必须能够利用其他Java SDK,例如AWS SDK(例如,指示启动batchjob,将数据注入队列等)。具有测试的框架是否需要作为应用程序部署或直接从CI运行是次要的。

1 个答案:

答案 0 :(得分:0)

如果您已经有可以在生产中运行的后备测试,那么您只需要安排在这些测试上运行。詹金斯对此很好(https://wiki.jenkins.io/display/JENKINS/Schedule+Build+Plugin

您可能会收到失败作业的电子邮件(或其他提醒)。 Jenkins也会关注测试报告 - 与单元测试完全一样。

安排测试运行的技术

您可以安排使用任何其他技术运行测试 - 例如Amazon AWS实例,AWS Elastic Beanstalk工作环境(https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html)等。

我觉得Jenkins最合理,因为你对测试报告,通知等提供了开箱即用的支持。

对于任何其他技术,您必须自己编写报告,通知。

撰写测试的技术

我可以在任何能够进行HTTP REST调用的技术中编写测试。对于性能测试,Jmeter或Gatling是不错的选择。

对于验收测试,您可以使用RestEasy,Spring的TestRestTemplate,Apache HTTP客户端等。 作为测试运行框架,您可以使用Junit4,Juni5,TestNG或Spock(如果您使用Groovy语言)。测试结构可以与普通测试类似。很好地命名的独立方法,可以很好地测试一件事,有意义的断言等等。 对于编写断言,我的个人偏好是AssertJ,但JavaHamcrest也会这样做。

这些测试可以(并且应该)写在src / test目录中,在单独的存储库中(或在相同的存储库或不同的模块中)。

对于该测试模块,您可以在src / main目录中编写与测试相关的服务,因此src / test目录将仅包含测试方案。测试服务可能是您需要的 - 管理文件,检查数据库等。

您可以考虑以BDD风格和JBehave或Cucumber等工具编写测试场景。就个人而言,只有当企业对测试场景感兴趣时,我才会看到BDD测试的价值。如果这些测试仅由技术人员使用,那么我发现在非BDD技术(Junit,AssertJ)中更容易维持这样的测试。