SOA夜未眠 9

来源:互联网 发布:java web开源项目 编辑:程序博客网 时间:2024/05/16 01:19

流程服务的测试

―――――――――――――――――――――――――――――――――――――――

这几天,我们遇到了一个难题,流程服务的测试进展很慢。

主要的问题体现在哪里呢?

第一,当流程去调用服务时,会发生数据格式的错误,比如一个非空字段填入了空值,时间字段不能带时分秒等等。

第二,因为流程的调用有连贯性,比如一个流程服务在调完了OA系统,等待OA系统的回复,然后再去调用物资系统,如果在调用物资系统时出错,则需要重新测试,又要从OA系统开始。

第三,因为每个系统都是不同的开发商开发的,当发生了问题,首先要确认是谁的问题,然后才能做相应的修改,基本上每个服务都要小修小改。

第四,有一个开发商一定要求客户开具需求变更确认单,签字传真回开发商公司,等开发商的领导确认之后,才能进行修改,这样变更的响应速度就很慢。

第五,每个系统都会有内部流程,比如流程服务调用OA系统,OA系统会启动它内部的审批审批流程,需要人工操作,大约五分钟之后才能回复给流程服务。如果一个流程服务需要调用三个系统,每个系统的内部流程都要运行5分钟,那么这个流程服务的测试周期是15分钟。而且流程服务的测试人员需要协调各开发商的测试人员,通知他们登入系统做操作,运行系统的内部流程。如果开发商的人员有事不在,比如大便去了,就会等待很久。

 

第一个问题的原因在于开发人员对服务契约研究不够,或者服务开发人员没有严格按照契约开发服务。比如契约中XML元素定义如下:

s:element name="clientRequest">

                            <s:complexType>

                                   <s:sequence>

                                          <s:element name="age" type="s:int"/>

                                          <s:element name="id" type="s:string" minOccurs="0"/>

                                   </s:sequence>

                            </s:complexType>

                     </s:element>

但是客户端送过来的数据会变成

<clientRequest>

       <id>mary</id>

       <age>116</age>

</clientRequest>

XML元素的顺序不对,或者送一个空值过来。

一般对于一个对XML Schema熟悉的开发人员来说,他会知道应该怎样按照XSD的要求组织数据,但是,我遇到的开发商的开发人员却不知道。

又比如,有一个服务返回数据要求是下列格式:

<m:clientRequest xmlns:m="test.com">

       <m:id>mary</m:id>

       <m:age>116</m:age>

</m:clientRequest>

在运行环境中,服务返回的是

<ns:clientRequest xmlns:ns="test.com">

       <ns:id>mary</ns:id>

       <ns:age>116</ns:age>

</ns:clientRequest>

如果是按照XML的方式解析,这两者是完全等同的,可是客户端的开发人员是按照字符串的方式解析,所以他就无法解析服务的返回参数。

 

我得到的教训就是,在定义完服务契约之后,需要对开发商的开发人员进行提醒,如果他们根本没有XML编程的经验,需要提供培训。

 

第二个问题,比较难解决,我发现这个问题之后,提出能不能各个系统收到流程服务的消息之后,直接返回一个模拟的数据,让流程能够快速运行下去。各个系统再对收到的消息进行操作测试。可惜的是,时间不允许再做这样的改动了。

 

第三个问题,是各个开发商的服务单元测试没有认真去做,这和开发人员的责任心有关,在流程服务的测试过程中,我发现流程的错误常常是开发商的服务导致的,但是等待他们修改会浪费流程服务测试的时间。如果提高开发人员的责任心呢,我的建议是只有靠完善监督制度保证。

第四个问题,这是客户的掌控能力问题和商务问题。我只能希望我下个项目不要遇到变更确认单的事情。

第五个问题,我要求流程服务的测试人员学会所有其它系统的操作,他能够登录到别的系统中去启动它们的内部流程,这样能够提高测试效率。

原创粉丝点击