尽管我是Java和Scala开发人员,但我仍然对软件测试充满热情。 如果更精确-Web应用程序。 开发Web应用程序并确保应用程序具有良好的质量真的很有趣。
当我开始职业生涯时,最受欢迎的Web架构是MVC(模型视图控件),并且非常简单。 当您开发一些业务逻辑时,您必须编写一些单元测试来检查内部控制器功能的功能,这就足够了。 当时,集成测试是更复杂的任务,因为这种测试意味着使用了一些模拟框架。
但是时间到了。 而且,旧的MVC架构已不足以满足许多客户端类型的需求,例如智能手机,平板电脑,浏览器。 REST体系结构开始替代MVC。 越来越多的应用开始使用一种API通过HTTP与不同的客户端进行通信。 这种情况再创新。 因为所有与数据和数据处理有关的业务逻辑都集中在服务器上,而客户端负责数据的表示和其他额外的操作。
您可能已经猜到了,我刚刚描述了单页应用程序方法(SPA)中使用的原理。 通过这种方式,构建了许多现代应用程序Facebook,Instagram,Twitter。
尽管开发人员更改了他们的应用程序,但测试方式也发生了变化。 结果出现了一个新的层,在该层上测试不仅适用,而且非常有效。 我完全在谈论API层。 由于API是由不同的客户端(智能手机,台式机等)使用的,因此有必要收集一组测试,以检查所有类型客户端的通用逻辑,并突出显示特定于客户端的测试方案,以专注于特定于客户端的逻辑。 该逻辑适用于已经在API层中测试过的数据。
这种方法为我们提供了一种惊人的测试策略。 测试人员可以节省时间,因为他们不需要通过与已经测试的数据集进行交互来在不同的客户端上重复测试。 他们只需要关注UI和一些特定功能。
REST服务的自动化测试
以我自己的经验,我通过编写自动化测试脚本来执行REST API层的测试。 为此,我使用JayWay公司开发的REST保证库。 这个Java库确实是自动测试REST服务的强大武器。
这样的测试代码看起来非常不错:
@Testpublic void getLandLaordTest() {given().contentType(ContentType.JSON).pathParam("id", "DoYlvMXN").when().get("/landlords/{id}").then().statusCode(200).body("firstName", equalTo("Sam")).body("trusted", equalTo(false));}
这很简洁,一点也不冗长。 在Java项目中使用REST保证使用的另一个优势是它的简单性。 我可以教我的团队中的任何成员在3-4小时内开发此类测试。 它也可以与最受欢迎的Java测试框架(如TestNG,JUnit和Hamcrest)配合使用。
摘要
我建议测试您编写的代码,因为它可以使您的软件开发能力更上一层楼。 工作自动化是成功和节省时间的关键。
翻译自: https://www.javacodegeeks.com/2015/04/automated-testing-of-rest-services.html