按计划运行自动化测试作为运行状况检查

时间:2014-07-14 16:42:17

标签: testing selenium build integration

我的任务是为我们的生产站点创建健康检查。它是一个.NET MVC Web应用程序。存在许多依赖性,因此存在失败点,例如文档存储库,Java Web服务,站点管理器策略服务器等。

管理层希望我们成为第一个知道任何一点是否失败的人。如果出现问题,目前我们正在追赶,因为客户通知我们。我编写了一套基于Selenium WebDriver的简单集成测试,用于测试登录和一些轻量级操作,例如:通过文档api检索文档。我对结果感到满意,但需要能够在循环中运行它们并在任何失败时通知IT。

我们有一个TFS构建服务器,但我不确定它是否适合这项工作。我不想继续构建测试,只需运行它们。此外,我似乎无法比每天更频繁地定义构建计划。

我很感激有关如何最好地实现这一目标的任何想法。提前致谢

2 个答案:

答案 0 :(得分:0)

您想要做的是一套“烟雾测试”。烟雾测试基本上是非常简短和甜蜜的独立测试,可以测试应用程序的各个部分,以确保它的生产准备就绪,就像你说的那样。

我不熟悉TFS,但我确信我能为您提供的信息将是有用的,并且可以转移。

当你说“我不想构建测试时,只需运行它们”。您使用的任何CI,需要来构建它们来运行它们。基本上“建筑”将等同于“编译”。为了让CI实际运行测试,需要编译。

就运行它们而言,如果TFS构建系统有任何用处,它将具有定期构建选项。在Jenkins,我可以指定一个Cron时间来运行。例如:

0 0 * * *

表示“每天00:00运行(午夜)”

,或者

30 5 * 1-5 *

表示“每周5:30运行”

由于您正在进行Smoke Tests,因此请务必记住保持简短且甜蜜。烟雾测试应该一次测试一件事。例如:

testLogin()
testLogout()
testAddSomething()
testRemoveSomething()

答案 1 :(得分:0)

Web应用程序运行状况检查是一项非常重要的功能。如果您的网站运行与否,使用烟雾测试非常有用,并且这些可以自动运行以定期运行,以通知您网站出现问题,最好在客户注意之前。

然而,如果烟雾测试失败,他们只告诉您该网站不起作用,它不会告诉您原因。那是因为你正在进行外部调用,因为你不能看到应用程序的内部。 I.E是数据库已关闭,是网络问题,磁盘空间,远程端点无法正常运行。

现在其中一些东西应该可以从其他监控中识别出来,你肯定应该有一个错误日志,但有时你想从马口听到它,最好的东西可以告诉你应用程序的行为是你的应用程序本身。这就是为什么许多应用程序都有可以按需调用的健康状况检查。

健康检查即服务

我过去实施的健康检查服务非常相似,他们执行以下操作:

  1. 公开可以按需调用的端点,即/ api / healthcheck。通常这是私人的,无法从外部访问。
  2. 它返回一个包含以下内容的Json响应:
    • 整体状态
    • 返回结果的主机(如果在负载均衡器后面)
    • 应用程序版本
    • 一组子系统状态(这些将指示哪个组件未执行)
  3. 该服务应具有弹性,在检查时抛出的任何异常仍应以返回的健康检查结果结束。
  4. 可以在一个视图中显示多个运行状况检查端点的某种聚合
  5. 这是我之前提到的

    在执行此操作后,我已多次启动库以取出运行状况检查的主线并将其作为服务公开。您可以随意使用或使用nuget包。

    https://github.com/bronumski/HealthNet