代码之家  ›  专栏  ›  技术社区  ›  Bigwave

cruisecontrol.net中c自动化web测试的“测试艺术”

  •  3
  • Bigwave  · 技术社区  · 16 年前

    我们现在使用SWEA( http://webiussoft.com )在我们的cruisecontrol.net夜间构建期间运行站点的自动化测试。

    我们正在寻找一个更强大的解决方案,我们正在研究“测试的艺术”( http://www.artoftest.com )解决方案。

    有人用过这个工具吗?

    最重要的是,使用这个工具维护测试有多容易?

    或者还有其他的c/nunit/cruisecontol.net解决方案可以推荐吗?

    4 回复  |  直到 15 年前
        1
  •  2
  •   sircody    16 年前

    我为艺术测试工作。在过去的几天里,我一直在研究如何使我们的框架与cruisecontrol.net很好地配合。主要的关键是在控制台模式下运行cruisecontrol.net服务器(而不是作为windows服务)。原因是允许单元测试运行阶段能够直接与桌面交互,这是ui测试所必需的。一般来说,在windows服务下运行的代码是不允许与桌面交互的(这是我们的要求),因此当它尝试时会失败。

    Teamcity也是另一个好的CI服务器。我现在正在看,已经基本弄清楚了。

    如果您有任何其他更具体的问题,请随时通过contact@artoftest.com与我们联系。我也会监视这个线程。

    watin还不错。不幸的是,它缺少任何形式的visualstudio集成,并且缺少我们提供的许多其他功能。

    谢谢, 科迪

        2
  •  1
  •   Brian Genisio    15 年前

    下面的链接是关于如何让webaii与所有流行的ci服务器(cc、teamcity和tfs build)协同工作的文档。

    http://www.artoftest.com/support/webaii/topicsindex.aspx?topic=cioverview

        3
  •  0
  •   pero    16 年前

    另一个选择可能是 WatiN 是的。

        4
  •  0
  •   user31934    16 年前

    看起来这两个大的是watin&selenium。我没有用硒做任何工作,所以没有意见。

    我用了相当多的水,而且很好,但是有很多问题。很难处理来自浏览器的巨大变化的响应时间…设置超时时间等。

    最新版本的watin支持ie&firefox,非常酷。

    就测试维护而言,根据我的经验,最重要的是将“测试驱动程序”代码与“页面包装代码”完全分离。所谓“测试驱动程序”,我指的是实际的测试逻辑(nunit或类似的),它可能有如下代码:

    var wrapper = new SearchPageWrapper(browser);
    wrapper.ClickAdvancedSearch();
    wrapper.EnterSearchPhrase("dog");
    wrapper.SetSortBy(SortType.Date);
    wrapper.ExecuteSearch();
    

    …页面包装器将此逻辑接口公开给页面本身,同时隐藏实现详细信息(这可能很复杂,并且经常随页面布局而更改):

    public class SearchPageWrapper {
      ...
      public void ClickAdvancedSearch() {
        _browser.Buttons("advSearch").Click();
      }
    
      public void EnterSearchPhrase(string phrase) {
        _browser.TextBox(Find.ByName("phrase")).TypeText(phrase);
      }
      ... etc ...
    }
    

    通过这种方式,您可以构建一个包装器库,使添加新测试用例变得容易,同时也使处理影响watin查找与页面上的元素交互方式的布局更改变得不那么痛苦。