8月末工作总结(阿里软件平台接入测试)

上一篇 / 下一篇  2008-08-28 12:19:17 / 个人分类:日志

本月重点测试SAAS在阿里软件平台的业务。比较麻烦,有很多接口程序需要测试

(1)接口环境配置。

需入软件的接口地址,在阿里平台测试:测试无法显示此页。

查原因1:发现域名没有解析

域名成功解析后,还是无法显示页面。

在程序www/下加入php.php 输出phpinfo();无法输出PHP解析后信息。

查原因2:PHP程序无法解析的原因,服务器上设置问题

解决这二个问题后,可以成功跳转到阿里互联平台了,但是页面无法显示。

原因3:发现程序中缺少接口文件,除了login.php,pre.php这二个接口外,还有include/wsclient/aliWsClient.class.php这个也是接口文件。www/demo/demo/目录;

pre.php中设置的程序目录名出不对应。改正这些,终于解决了PHP程序生效的问题。

(2)接口调试准备:测试4个功能,分别为免登录测试、定价页面测试、通知URL测试和综合测试。

    1、免登录测试,即在开发者社区中模拟架上应用点“使用”过程,就是测试从平台登录到ISV应用系统,ISV应用调用平台免登录接口验证用户。

    2、定价页面测试,如果ISV应用有做特殊的自定义定价页面,比如除时间相关,具体应用价格还跟空间、人数相关,或提供特殊的套餐机制。在该类应用申请上架时,需要填写订购URL,测试定价页面。如果是简单的模型定价,比如:一个月月租多少元,不需要做这块测试。

    3、通知URL测试,平台在订购应用成功、付款成功或退订成功,都会通知ISV。如果ISV应用想获得平台的通知信息,需要在申请上架时,填写具体通知URL。

    4、综合测试,模拟集市购买,走的是真的软件购买,注意:做为ISV用户,在注册软件时,平台自动给予了使用自己应用100年的有效期,所以用ISV用户去综合测试购买软件会续订不成功,请新注册终端用户,再进行测试。终端用户注册后,因软件没上架,没有入口购买,请在浏览器里输入购买应用URL就可以购买了

(3)接口调试过程 :详细介绍一个免登陆测试的过程:这个颇为复杂,也花了不少时间才解决。

免登录,也就是阿里系统已经默认为管理员订购了该软件,填写好免登录测试的URL地址就可进行免登录测试。

接口开发与测试”页面,点击“免登录测试”按钮,如果能以ISV的身份免登陆到您的软件的测试环境,那么免登录测试就成功了。

要参考的文件:免登陆接口调用手册

免登接口validateUser是个非常重要的接口,在调用任何其它接口前,必须要调用此接口.下面我就简单介绍下validateUser接口的使用场景,使用流程及具体的调用方法.

使用场景:
验证用户身份,确保用户已经登录软件互联平台,并且是该应用的有效使用用户,一般从阿里软件互联平台跳转到ISV应用的身份验证过程中需要使用到。如用户订购了一个软件,在用户的“我的软件”中会出现如下页面:

在用户点击了“点击使用后”,ISV应用应该要调用validateUser接口来验证用户的身份。

免登流程:

从上图我们可以看到,用户免登录时主要是调用validateUser接口。
接口参数介绍:
在这里我要介绍的主要是sip_sign参数和token参数,因为ISV在调用接口过程中,容易在这两个参数上出问题。接口的其它参数在接口列表中已经有详细说明,在这就不说了。
1、token
token是身份验证令牌,可以在软件互联平台中跳转到ISV App时的URL参数中取得。token请求超时限定为10秒钟。所以如果ISV在token生成超过10秒以后才使用它,那么在调用接口时,会提示签名无效。
2、sip_sign
平台通过签名参数来防止传输过程中包被篡改,所以这个参数是很重要的。然后这个参数的生成也是比较繁琐的,很容易出错。如果ISV生成的签名参数与平台生成的签名参数不同,那么调用时同样会提示签名无效。在生成签名参数时,有几点是要非常注意的,即参与签名的参数的个数、参数值的格式及参数的排序。有关sip_sign的生成,我们在论坛中已经有好几个帖子了,有原理介绍的,也有具体生成代码的。帖子如下:
1)参数生成攻略:http://forum.alisoft.com/viewthread.php?tid=715&extra=page%3D1
2)参数生成代码:http://forum.alisoft.com/viewthread.php?tid=659&extra=page%3D1(PHP版)

以下是PHP版接口调用的范例:阿里写的不全,也是程序员自己摸索出来的

validateUser接口调用生成签名完整DEMO
注意$signStr变量的参数是升序排列,然后连接字符串形成: $sip_sign=md5(sip_appsecret+[param1+value1…paramn+valuen])
复制内容到剪贴板代码:
/**
         * 阿里软件平台的REST方式认证
         * [url]http://sipdev.alisoft.com/sip/rest[/url]
         * ?sip_timestamp=2008-05-02+18%3A48%3A12
         * &sip_appkey=10184
         * &appId=10184&userId=2175944
         * &sip_sign=713A26A75979CB2FCF915EE2DE41F2C7
         * &appInstanceId=f2bf7b29-abee-4a3e-8678-949cf8bad9c7
         * &token=0C1BC761C916D2A203D188993F29621D2D739299195A75B07CDC9A4E534C28F1FCF006F0FB8DE9E24E731D93275AFC56
         * &sip_apiname=alisoft.validateUser
         * &sip_sessionid=b4927f1fef8b4155b2c9b5e2dfe5ae0e
         *
         * sip_sign=md5(sip_appsecret+[param1+value1…paramn+valuen])
         */
        
        private $APP_ID = 10184;
        private $CERT_CODE = "注册软件时生成的CODE";
        private $SIP_URL_PRE = "http://sipdev.alisoft.com/sip/rest";
       
        public function validateUserByREST($userId, $appId, $appInstanceId, $token){
                $proxy = new Snoopy();
                //准备本次请求参数
                echo $timestamp = date("Y-m-d H:i:s");//'2008-05-02 21:18:58';
                echo $sip_sessionid = '7d052759158b46e6b920397ab47441d5';
                echo $token = $token;
                //生成签名
                $signStr = $this->CERT_CODE.'appId'.$this->APP_ID.'appInstanceId'.$appInstanceId.
                        'sip_apinamealisoft.validateUser'.'sip_appkey'.$this->APP_ID.'sip_sessionid'.$sip_sessionid
                        .'sip_timestamp'.$timestamp.'token'.$token
                        .'userId'.$userId;
                echo $sip_sign = strtoupper(md5($signStr));
/*
                $url = $this->SIP_URL_PRE."?sip_timestamp=".date("Y-m-d H:i:s")
                        .'&sip_appkey='.$this->APP_ID.'&appId='.$this->APP_ID.'&sip_sign='.$sip_sign.'&token='.$token.'&appInstanceId='.$appInstanceId
                        .'&userId='.$userId.'&sip_apiname=alisoft.validateUser'.'&sip_sessionid='.$sip_sessionid;
*/
                $formVars['sip_timestamp'] = $timestamp;
                $formVars['sip_appkey'] = $this->APP_ID;
                $formVars['appId'] = $this->APP_ID;
                $formVars['token'] = $token;
                $formVars['appInstanceId'] = $appInstanceId;
                $formVars['userId'] = $userId;
                $formVars['sip_apiname'] = 'alisoft.validateUser';
                $formVars['sip_sessionid'] = $sip_sessionid;
                $formVars['sip_sign'] = $sip_sign;
                //向AEP发出服务端请求
                $proxy->submit($this->SIP_URL_PRE,$formVars);
                echo '<pre>';
                print_r($proxy);               
                die();
        }

}

1、特别是向阿里服务器发送身份验证请求时调用到一个类,这个类没有提供给我们,之后在网上找到了

2、数据签名的一个加密和解密过程

3、webserver接口调用方式改成rest调用方式,返回XML格式。

4、tokenISV在token生成超过10秒以后才使用它,那么在调用接口时,会提示签名无效。这个问题花了大约一天时间,数据签名正确了,但是调用时总是超过10秒,造成token失效。最后检查发现是调用服务器路由慢的问题,找到服务器管理员,疏通网络问题后,完成这个接口的测试。

目前可以在平台检测到用户合法身份,还有几个接口需要继续测试。

其中找到不下十人问问题的解决方法,查找相关资料文档,感觉很头痛,今天早上来听说问题已解决,心里的石头终于放下一块了。

哎呀,虽然艰难,感觉过程中也学到了不少东西,问题就是这样一环扣一环,总能找到解决的方法的。哈哈

另一个收获就是,这种白盒测试,真的要看得懂代码,知道程序员写的东西是什么技术,是什么意思,然后清楚数据的流向,一步步来跟踪,还要了解后台的数据结构,表与表是用到存放什么数据的,各有什么作用。。。。



TAG: 日志

 

评分:0

我来说两句

Open Toolbar