|
以前接触的都是b/s结构的性能测试,这次的c/s结构的可让我损失了不少脑细胞,开发中用到了spring,所以加大了难度。还好解决了一些问题,不过还有些没解决,特来与大家分享,也希望高人能指点一下。
_remotewrapperremote7 = _remotewrapperremotehome33.create();
// Returns: ($Proxy120)
_string7 = "com.star.sms.j2ee.support.RemoteInvokerArg __CURRENT_OBJECT = {" +
"java.lang.Object arguments[] = {" +
"java.lang.Object arguments[0] = #ifUseRWCard#" +
"}" +
"java.lang.String beanName = #parameterService#" +
"java.lang.Class interfaceCls = {}" +
"java.lang.String methodName = #findSysParameter#" +
"java.lang.Class parameterTypes[] = {" +
"java.lang.Class parameterTypes[0] = {}" +
"}" +
"java.lang.String sessionId = #97ff5e2d-e420-4356-a3ad-e55eaa6686cc#" +
"}";
_remoteinvokerarg7 = (com.aa.sms.j2ee.support.RemoteInvokerArg)lr.deserialize(_string7,6); // RMIComponent
for(Object object : _remoteinvokerarg7.getArguments())
System.out.println("_remoteinvokerarg7:"+object.getClass());
_remoteinvokerresult7 = _remotewrapperremote7.invoke((com.star.sms.j2ee.support.RemoteInvokerArg)_remoteinvokerarg7);
// Returns: (com.star.sms.j2ee.support.RemoteInvokerResult)
_remotewrapperremote7.remove();
_remotewrapperremote8 = _remotewrapperremotehome90.create();
_remoteinvokerarg8 = (com.aa.sms.j2ee.support.RemoteInvokerArg)lr.deserialize(7,false); // RMIComponent
SavingPayInfo spinfo = (SavingPayInfo)_remoteinvokerarg8.getArguments()[0];
Account account = spinfo.getAccount();
account.setId(373L);
Customer cust = account.getCustomer();
cust.setId(63L);
_remoteinvokerresult8 = _remotewrapperremote8.invoke((com.aa.sms.j2ee.support.RemoteInvokerArg)_remoteinvokerarg8);
// Returns: (com.aa.sms.j2ee.support.RemoteInvokerResult)
_remotewrapperremote8.remove();
解释:
1〉从录制的脚本可以看出,action就是一个java类,可以直接进行java编程。
2〉从以上代码中可以看到 _remoteinvokerarg7 = (com.aa.sms.j2ee.support.RemoteInvokerArg)lr.deserialize(_string7,6); 这样的代码,从字面看也知道 这是返回了一个com.aa.sms.j2ee.support.RemoteInvokerArg 对象即_remoteinvokerarg7,再注意一点 deserialize 方法这个方法是反序列化的,即还原序列化的对象。经过查询API中RemoteInvokerArg该对象,我们可以找到它的方法,以上代码中用到了getArguments()方法,又通过结果对象的getClass()来确定得到类,以上结果中的通过 _remoteinvokerarg8 得到了SavingPayInfo 类,该类是我们可以直接操作的,这样就可以修改参数了。接下来的事情就是与开发人员沟通了解编码逻辑,通过修改代码来参数化数据。其中account.setId(373L);cust.setId(63L);就是修改参数的部分。
如果不懂代码,可以求助开发人员,但测试人员还是需要知道参数化哪部分。
3〉录制的脚本前后部分的连续性不好,只是捕获了客户端和服务端的传输数据。而且将这些数据固定化了。如:做一个先查询然后选择一个客户缴费,录下来的脚本虽然录制了查询和缴费过程。但是修改查询条件,再次执行脚本的时候会发现这次选择的客户并没有变化,应为脚本种已经将录制时的用户固化了,因此必须修改脚本种客户信息,而不能通过查询来选择。
问题
1〉哪一个登录来说吧,参数化了登录名和密码,即使密码设置错误运行脚本提示依然是成功。不知道该如何设置检测条件
2〉有些步骤不通过,但是捕获不到异常
这两个问题依然困扰着我,:( |
|