在soapUI中建立测试用例

发表于:2010-1-26 13:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:刘欣、张丽婷    来源:IBM

  3. 使用 Property 测试请求 GetBookRequest_JSON 返回的结果, response 参见 代码清单 3。

  在 Script Assertion 窗口中写入如下代码:

  清单 6. 使用 Property 测试 JSON 格式的书籍详情

 //get property
 def expectedID = context.expand('${#Project#book.id}');
 def expectedName =  context.expand('${#Project#book.name}');

 //assert the response header
 assert messageExchange.responseHeaders["Cache-Control"] == "no-cache";

 //assert the response body
 def bookRoot = net.sf.json.JSONSerializer.toJSON(messageExchange.responseContent);
 assert bookRoot.get("id") == expectedID;
 assert bookRoot.get("name") == expectedName;
 assert bookRoot.get("price") == 29.0;

  上述使用 Groovy Script 对 Service 调用结果进行验证,可用的 soapUI 对象包括 :messageExchange, context 以及 log。

  ● messageExchange: 当前交互 request/response 的 MessageExchange,可以用来直接访问 message content, HTTP Headers,Attachment 等对象。

  ● context: 运行当前 TestCase 的 TestRunContext 对象,具体使用方式请参见 soapUI API 文档。

  ● log: 一个标准的 Log4j Logger 对象,可以用来输出日志。

  依照上述步骤定义好 TestCase 并添加适当的断言之后,就可以对在线书店 REST 服务进行测试。双击 BookStoreSerive_TestSuite, 点击 Run 按钮来运行所有的 TestCase,结果如下图所示:

图 7. 运行测试用例

性能测试

  性能测试在 soapUI 中称为 Load Test, 针对一个 soapUI 的 TestCase, 可以建立一个或多个 LoadTest, 这些 LoadTest 会自动的 把 TestCase 中的所有步骤都添加到其中, 在运行的时候,soapUI 会自动的使用多个线程来运行这些 TestStep,同时也会监控 它们的运行时间, 例如最短时间,最长时间,平均时间等等。这样用户能够很直观的看到 REST 服务的响应时间,从而对性能进行调优。

  建立 LoadTest 非常简单,只需要在“Load Tests”上点击右键, 选择"New LoadTest", 然后输入名称即可,下图是一个针对 GetBookList 的 性能测试, 可以看到有两个 TestStep : "GetBookList_xml" 和"GetBookList_json" , 100 个线程并发执行, 时间限制是 60 秒。 最后的结果是,最短时间 4 毫秒,最长时间 1204 毫秒,平均时间 20.54 毫秒。

图 8. 性能测试

点击查看大图

  性能测试还支持断言,用户可以对一个 TestStep 或 TestCase 设置运行时间要求,例如平均时间大于 2 秒就认为失败,点击 图 8 中中的 “LoadTest Assertions”就可以设置。 当然根据需要,用户也可以编写脚本来做一些准备工作,或者清除工作。 参见 图 8 中的"Setup Script"和“TearDown Script”。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号