可视化软件测试,讨论可视化测试是否有存在的价值

什么是软件可视化测试

可视化的软件测试区别于一般的测试手段,它需要将测试结果直观的表现出来,而不仅仅是一个测试的结果。显然,可视化测试必须要有一个稳定的,可靠的,持续的测试数据收集方案,和多种直观的表现形式。

 

java 代码

测试数据采样的策略有2种

 |-- 本地策略 --  Annotation / xml defintion + xml-def的方式来将数据注入到core中

 |-- 远程策略 -- 只接受标准格式的持久数据

 

java 代码
  1. @RegistClass(title="anti size", name="anti")   
  2. @JRobinPrintor(Factory="File",identifier="antisize")   
  3. @CollectStrategy("local")   
  4. public class AntiRegManager{   
  5.   @add  
  6.   @id("antisize")   
  7.   @u("MAX")   
  8.   int antiPoolsize = 0;   
  9.   //.... hide sth   
  10.      
  11.   public anti native(){   
  12.     if(oAnti.isCancled) {   
  13.       return antiProxyIf.borrow();   
  14.     } else {   
  15.        //添加一个变化   
  16.        antiPoolsize = antiPool.size();   
  17.        //hide sth   
  18.     }   
  19.   }   
  20. }  

 

xml 代码
  1. <injection-configuration>  
  2.   <group>  
  3.      <bean id="anti" class="com.iktec.foo.AntiRegManager" />  
  4.   group>  
  5. injection-configuration>    

 

AntiRegManager类会是个持续性的类,antiPoolsize这个数值型变量的变化也是持续性的,Core模块里面的AkCfg会从xml中把AntiRegManager这个类提取出来,并且Reflect它的Annotation。根据这些定义我会把收集来的数据存储到anti.de这个文件里。core模块里面封装了client包,提供接口把anti.de解释成JRobin和jasperReport能够接受的数据类型,并且显示出来。

功能二

提供其他平台和其他语言的支持

由于我提出了这个测试方案在解决一些性能问题上还算直观,组里的其他的项目也希望通过这种方式来表现,所以我提供了Remote接口,但是这种方式只能接受标准格式的数据,我提供接口把这些数据直接导入可视化模块。

功能三

把多条数据的内容进行比较

java 代码
  1. @RegistClass(title="anti size", name="anti")       
  2. @JRobinPrintor(Factory="File",identifier="antisize")       
  3. @CollectStrategy("local")       
  4. public class AntiRegManager{       
  5.   @add      
  6.   @id("antisize")       
  7.   @u("MAX")       
  8.   int antiPoolsize = 0;       
  9.   //.... hide sth       
  10.          
  11.   public anti native(){       
  12.     if(oAnti.isCancled) {       
  13.       return antiProxyIf.borrow();       
  14.     } else {       
  15.        //添加一个变化       
  16.        antiPoolsize = antiPool.size();       
  17.        //hide sth       
  18.     }       
  19.   }       
  20. }   

 

java 代码
  1. @RegistClass(title="suz size", name="suz")          
  2. @JRobinPrintor(Factory="File",identifier="suzsize")          
  3. @CollectStrategy("local")          
  4. public class suzRegManager{          
  5.   @add         
  6.   @id("suz")          
  7.   @u("AVE")          
  8.   int suzPoolsize = 0;          
  9.   //.... hide sth          
  10.             
  11.   public void native(){                
  12.        //添加一个变化          
  13.        antiPoolsize = antiPool.size();          
  14.        //hide sth               
  15.   }          
  16. }   
xml 代码
  1. <injection-configuration></injection-configuration>  
  2.   <group></group>   
  3.     "anti" class="com.intec.foo.AntiRegManager" />          
  4.     "suz" class="com.intec.module.suzRegManager" />   
  5.      
  6.   

这样可以把2条数据曲线保存在一个可视化的图形中,这样2者之间可以有一个非常直观的比较。

其他有意义的测试功能

1:增加测试的曲线的夸张力 通过@addLease(fuc="+",value="10")  这条Annotation的作用是把测试获取的数据全部+10以后在存储起来。

2:添加统计 通过@reset(fuc="+","AVE")

现在还存在的问题

1:由于是使用动态代理的模式,所以只能介入到方法这一层。并且数据采集是完全针对接口的,目前工作环境是对业务接口的性能提供测试。所以功能上是非常单一的。我考虑过使用cglib来提供字段级别的数据识别。

2:统计数据存在一些人为因素影响到事实的数据,在表现上也有误差。

3:需要提供数值类型的数据,如Collection为不合法,Collection.size()就是合法的,但是用户必须提供一种类似 int size = xx.size()的方式,这样你的类会得到一个warning,无法做到完全的透明插入。

4:设计上的相对还是比较粗糙,特别在异常的处理上有一些问题,长时间运行会有一些问题。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值