现如今,软件的功能多种多样,能够不断更新满足客户的不同需求,一个单独的仅满足一种期望的模型是无用的。SOA适用于解决方案。
这也就是为什么很多公司正在使用或尝试使用SOA架构模型方法,因为具有削减成本,业务灵活,易于维护等优点。随着市场对SOA需求不断增多,现代测试人员也越来越多地学习这样一种测试方法。
在本文中,我们将介绍SOA的基础知识及其示例。这将给读者提供一个SOA的基本思想,接下来是Web服务的实现方式,最后我们将学习SOA架构模型的测试过程。
什么是SOA?
SOA是面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以使用一种统一和通用的方式进行交互。与其他复杂系统不同,SOA包括较小的组件,服务,微服务以满足业务需求。SOA是一种粗粒度、松散耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/Web Service技术之后的自然延伸。SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。
关于SOA的例子
业务需求:用户能够使用根据地理位置不同而提供相应餐馆推荐的应用程序,搜索完成后,能自动下载餐厅的详细信息和菜单,然后付款下订单。而这种业务需求则可以通过实施SOA来实现。
在此过程中SOA可以提供以下服务/微服务,来完成执行:
在登录期间,使用的是"验证服务"
餐馆搜索,使用的是"地理位置服务"
下载菜单,使用的是"菜单下载器服务"
最后付款,使用的是"付款服务"
上述的每个服务都是独一无二的,以使整个系统能够协调运转起来。如果客户只需要浏览餐厅和菜单,但不需要付款完成订单,那么在这个过程中只需执行前三个服务。这样就会使工作简单易行,分工明确,能够更好地服务于销售、维护以及客户。
网页服务
1、这是API (应用程序编程接口),有助于不同软件程序之间的交流。
2、某服务提供商承载Web上的服务。作为托管的一部分,WSDL也由该提供商托管。
3、当客户端向服务提供商发送请求消息时,使用的是URL / WSDL建立通信。
4、在下面的示例中,地理位置服务器托管是由服务请求者使用的Web服务。
SOA测试流程
每个产品的型号,基础设施都需要进行测试,以满足最终用户对优质产品的要求。SOA测试不仅限于层的测试和Web服务协议测试这更是架构与每个部分的整体测试。测试方法与正规测试流程类似,即
1、审查测试流程
2、测试规划
3、测试设计
4、环境设置
5、执行阶段
6、报告阶段
SOA测试过程主要围绕架构中的3层:服务消费者层、处理层、服务层
与上述相同的例子,我们可以有如下的图层:
1、服务消费者层有助于消费者互动,这对于读取最终用户输入并返回到所接收请求适当响应很有帮助。换句话说,这基本上是在UI界面。
2、专注于实施方面的层次,在本文中所举例子中包含认证方法、用户创建等。
3、服务层是属于服务方面的业务功能,执行特定任务时实际调用的所有服务都在此层。
在测试过程中大致可以分为四个阶段:
第1层
1)服务水平测试:
系统中涉及的每个服务都是基于请求和响应方法的单独测试。
此测试具有强制性,其他测试都是在此基础上建立起来的,非常重要
2)功能测试:
对其业务需求进行测试,以判断收到的响应是否正确。
业务需求首先被转换成测试用例,形成请求语句,然后通过处理请求语句以查看获得的响应是否正确。
在无效的输入数据的情况下,应该修改适当的错误代码,更正为正确的错误信息。
3)安全测试:
无论在哪个阶段涉及到Web服务,安全测试在整个测试过程中都起着关键作用。
网关验证,特别是在支付网关验证中需要在解析数据时候加密。
当涉及到XML时,则应该验证漏洞,如CSRF,SQL注入。
4)性能测试:
在架构中使用服务器托管,以便其他的很多应用程序也可以使用它,性能测试能够提高这些服务的可信度。
服务测试应当具备以下的性能:
确定服务的稳定性。
验证服务的可扩展性。
峰值负载条件下的服务行为
记录服务之间的响应时间
第2层
过程测试:
在这个过程中需要涉及到各种业务流程,其中应该包括涉及业务需求的Web服务和应用程序的集成场景
在测试中应该使用模拟器来生成样本输入数据,并对相应的输出进行验证。
执行来自于不同层的数据流,以便在集成时确保系统的顺利运行。
第3层
端到端测试:
第4层
回归测试
该测试验证了系统在增量版本中的稳定性。
这可以通过手动测试和自动化测试来实现。
SOA 测试工具
SOA测试的应用程序有很多,SOA测试工具的选择依据是准确的测试结果和更优质的生产力。
SoapUI:这是一个免费的工具,用于Web服务测试。SoapUI能够进行功能测试,性能测试和负载测试
Apache Jmeter:这也是一个OPEN SOURCE实用程序,用于分析SOAP性能测试。
JProfiler:JProfiler是一个全功能的Java剖析工具(profiler),专用于分析J2SE和J2EE应用程序。
HP服务测试:这是集成到HP QC。这是一个功能测试工具,它还支持UI和共享服务测试