Web 服务测试教程:如何测试?通过示例学习

什么是WebService?

Web 服务是一种机制或通信媒介,通过它两个应用程序/机器可以交换数据,而不管它们的底层架构和技术。

什么是 Web 服务测试?

网络服务测试 是一种验证 Web 服务的软件测试。Web 服务测试的目的是检查 API(应用程序接口)的功能、可靠性、性能和安全性。在某些情况下,Web 服务测试类似于单元测试。您可以手动测试 Web 服务,也可以创建自己的自动化代码,或者使用现成的自动化工具,例如 Postman.

为什么需要WebService?

一般来说,软件应用程序是为了供人类使用的而开发的,人们向软件服务发送请求,软件服务则以人类可读的格式返回响应。

在现代技术时代,如果您想构建软件应用程序,您无需从头开始构建所有内容。有许多现成的服务可用,您可以将它们插入到您的应用程序中,然后开始在您的应用程序中提供这些服务。

例如,您想要显示天气预报信息,您无需在应用程序中收集、处理和呈现数据。您可以从已经在处理和发布此类数据方面经验丰富的人员那里购买服务。

Web 服务允许我们进行此类实现。

例如,考虑以下 WebService

http://www.webservicex.net/stockquote.asmx?op=GetQuote

它为公司提供股票价值。

让我们查找 Google 的股价(代码:GOOG)

Web 服务测试

响应 XML 给出股票价格。

Web 服务测试

软件应用程序可以使用 SOAP 或 HTTP 协议调用此 WebService。

Web 服务协议

Web 服务可以通过不同的方式实现,但以下两种是流行的实现方法。

  1. SOAP(简单对象访问协议)
  2. REST(表述性状态转移架构)

SOAP

SOAP 是 W3C 标准定义的用于发送和接收 Web 服务请求和响应的标准协议。

SOAP 使用 XML 格式发送和接收请求 因此数据是独立于平台的数据。SOAP 消息在 SOAP 封装内由提供方应用程序和接收方应用程序交换。

由于 SOAP 使用简单的 http 传输协议,因此其消息不会被防火墙阻止。

REST的

REST 表示表述性状态转移;它是一种通常通过 HTTP 运行的架构。REST 风格强调客户端和服务之间的交互,通过限制操作数量来增强交互。REST 是 SOAP(简单对象访问协议)的替代方案,在某些情况下,REST 不使用 XML 进行请求,而是使用简单的 URL。与 SOAP 不同,RESTFUL 应用程序使用 HTTP 内置标头来承载元信息。

REST 使用各种代码来确定用户是否有权访问 API,例如代码 200 或 201 表示与响应主体交互成功,而 400 表示请求错误或请求 URI 与系统中的 API 不匹配。所有 API 请求参数和方法参数都可以通过以下方式发送: 解决方案&帖子 or 的GET 变量。

Rest API 支持 XML 和 JSON 格式的 WebServices API 测试。通常首选 联络号码 以及网络应用,因为它可以让应用运行得更快、更流畅

wsdl

WSDL(Web 服务 Descript离子语言 (ion Language) 是一种基于 XML 的语言,用于描述 Web 服务所提供的服务。

WSDL 以 XML 格式描述了特定 Web 服务提供的所有操作。它还定义了如何调用服务,即我们必须提供哪些输入值以及它将为每种服务生成的响应的格式。

如何测试 Web 服务?

要测试 Web 服务,您可以

  1. 手动测试
  2. 创建您自己的自动化代码
  3. 使用现成的自动化工具,如SoapUI。

Web 服务自动化测试涉及以下步骤 -

  1. 了解 WSDL 文件
  2. 确定特定 Web 服务提供的操作
  3. 确定我们需要发送的 XML 请求格式
  4. 确定响应 XML 格式
  5. 使用工具或编写代码发送请求并验证响应

假设我们想测试提供货币转换功能的 Web 服务。它将提供不同国家货币之间的当前转换率。我们可以在应用程序中使用此服务将一种货币的值转换为另一种货币。

现在让我们看看上面的步骤

步骤 1 至 4:了解 WSDL 并确定操作和 XML 格式

货币 Convertor WSDL 文件可见@(http://www.webservicex.net/CurrencyConvertor.asmx?wsdl)将提供有关货币的信息 Convertor 它将支持的 Web 服务方法、我们需要传递的参数以及参数的类型……等等。

WSDL 以及确定操作和 XML 格式

WSDL 以及确定操作和 XML 格式

步骤 5:使用工具或编写代码发送请求并验证响应

有很多 WebService 测试工具可用于测试 SOAP Web 服务。SoapUI 是最受欢迎的工具之一 API 工具 这将帮助我们测试 SOAP Web 服务。实际上,您可以使用任何能够通过 http 将 XML 请求发送到 Web 服务提供商应用程序并能够根据预期结果解析和验证响应 XML 的编程语言。在本 Web 服务测试教程中,我们将测试 WebService

  1. 运用 Java
  2. 使用 SoapUI

第 1 部分)使用 Apache Axis2 API 进行 WebService 测试(Java).

一般来说,Web 服务接受请求并以 XML 格式发送响应。

Apache Axis2 API 项目是一个 Java 实现 API,它将用于为服务器端(服务提供者)和客户端(服务消费者)创建 Web 服务。

Axis2 能够发送 SOAP 消息并接收和处理 SOAP 消息。我们可以编写一个小的 Java 程序使用 API 创建 Web 服务。Axis2 将从 Java 程序将用于通信 Web 服务提供的服务。我们可以使用相同的 Axis2 来生成 Java 我们可以使用该 WSDL 文件中的类(存根)作为客户端程序来生成 Web 服务请求、将请求发送到服务端点并处理响应。

  1. 基本上我们将创建一个简单的 Java 我们将在其中实例化存根类的程序。
  2. 使用存根我们将通过传递所有必需的信息来调用请求方法。
  3. 存根程序会将该请求转换为 XML 请求格式,并将其发送到服务端点,服务端点将读取该请求并处理该请求并以 XML 格式发送响应。
  4. XML 响应将转换为 Java 类并返回给实际的程序。

让我们详细看看上述步骤

步骤a)下载axis2 API @ https://axis.apache.org/axis2/Java/core/download.cgi & 设置环境变量‘AXIS2_HOME’

使用 Apache Axis2 API 进行 WebService 测试(Java)

步骤 b)创建一个文件夹来保存所有生成的工件

例如:C:\Axis\Projects\CurrencyConverter

步骤 c) 打开命令提示符并导航到要生成工件的文件夹结构,然后运行以下命令,该命令将生成存根

%AXIS2_HOME%\bin\WSDL2Java -uri http://www.webservicex.net/CurrencyConvertor.asmx?wsdl -p org.apache.axis2.currencyconvertor -d adb –s

使用 Apache Axis2 API 进行 WebService 测试(Java)

步骤 d) 命令成功运行后,您将看到包含所需文件的文件夹。

使用 Apache Axis2 API 进行 WebService 测试(Java)

步骤 e)在本 Web 服务测试教程的下一步中,我们必须创建客户端程序,通过该程序,我们将使用生成的存根发送实际请求。打开 eclipse 并创建新的 Java 项目并选择我们上面创建的文件夹。

使用 Apache Axis2 API 进行 WebService 测试(Java)

步骤 f) 将所有与 axis2 相关的 jar 添加到项目构建路径,它将位于 axis2 软件文件夹的 lib 文件夹中

(例如:C:\Axis\axis2-1.6.2\lib)

使用 Apache Axis2 API 进行 WebService 测试(Java)

步骤 g) 创建新的 Java 类别(例如:客户端。Java) 并实例化存根对象。使用存根对象,我们可以调用特定 WebService 支持的所有方法。

使用 Apache Axis2 API 进行 WebService 测试(Java)

Client.Java Program
package org.apache.axis2.currencyconvertor;
import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.ConversionRate;
import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.ConversionRateResponse;
import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.Currency;

public class Client {
 public static void main(Java.lang.String args[]) {

  try {

       //Create the stub object by passing the service end point url
       CurrencyConvertorStub stub = new CurrencyConvertorStub("http://www.webservicex.net/CurrencyConvertor.asmx");
       //ConversionRate is the class which we have to use mention the from and to currency
       //ConversionRate object will be the parameter for the conversionRate operation
       ConversionRate conversionRate = new ConversionRate();
       conversionRate.setFromCurrency(Currency.USD);
       conversionRate.setToCurrency(Currency.INR);

       //Create the ConversionRateResponse object, which is going to be used to catch the response
       //call the conversionRate service using the stub object
       ConversionRateResponse conversionRateResponse = stub.conversionRate(conversionRate);

       //We can use the conversionRateResponse object to retrieve the response of the ConversionRate Service
       System.out.println("Conversion Rate from INR to USD : " + conversionRateResponse.getConversionRateResult());

       } catch (Exception e) {
       e.printStackTrace();
      }
    }
}

第 2 部分)如何使用 SoapUI Web 服务进行测试

在 SoapUI 中

  1. 转到文件>新 Soap 项目
  2. 输入项目名称和 WSDL URI 位置
  3. 单击确定

使用 SoapUI Web 服务进行测试

  1. 展开第一个请求并双击“Request1”。它将以 XML 格式显示 SOAP 请求。
  2. 输入原货币和目标货币
  3. 点击提交按钮
  4. 响应 XML 将显示在右侧窗格中。

使用 SoapUI Web 服务进行测试

您可能得出这样的结论:使用 SoapUI 等 Web 服务测试工具可加快您的 Web 服务自动化测试工作。因此,SoapUi 将是我们在接下来的教程中学习的重点。

结语

  • 软件应用程序使用 WebService 相互通信和交换数据
  • SOAP 和 REST 是创建 WebService 的两种流行协议
  • SOAP支持基于XML的数据交换
  • REST 支持 XML、Json 或简单 URL 中的数据交换,以进行 WebServices API 测试。
  • WSDL 是一种基于 XML 的语言,用于描述 Web 服务提供的服务。SOAP 是使用 WSDL 定义的。
  • 要测试 WebService,您可以
    • 创建您自己的代码。例如,使用 Axis2 API 进行 Java
    • 使用 SoapUI 等 WebService 测试自动化工具
  • SoapUI 等自动化工具将快速启动您的 Web 服务自动化测试工作,与使用 Axis2 API 创建自己的代码相比,所需的编码工作量更少

常见问题

网络服务 网络API
根据W3C定义,所有通讯及数据交换均基于XML Web API 通信和数据交换可以是 XML、JSON 或纯数据
它有定义的标准 – WSDL 没有明确的标准
您无法压缩数据,但可以压缩 HTML 请求 您可以压缩数据
例如:SOAP 例如:REST

进一步了解 Web API 测试

本 Web 服务测试教程得益于 Narender Reddy Nukala 先生的贡献。