首页 > 代码库 > 关于selenium自动化测试数据的管理---测试用例管理---jxl,POI

关于selenium自动化测试数据的管理---测试用例管理---jxl,POI

标 准

选择朋友是结交之前要办的第一件事.选择朋友的标准是什么?当然是与志向远大的人交友,与兴趣相投的人交友,与见识广博的人交友,与正直的人交友,与诚信的人交友.近朱者赤,近墨者黑.交上益友,一生幸福;交上损友,一生祸害.

        selenium 多数被应用于功能测试(冒烟测试)、流程测试、回归测试,这里要说的就是在执行这些测试的时候,测试用例的管理问题。

        常见的黑盒测试方法分为:边界值分析、等价类划分、因果图、错误推测。。。这里不都一一举例,作者有一篇文章里画了一张图,是专门详解常用的测试方法的。总之,为了完成测试效果和目的,会有很多很多的测试用例产生,面对我们的业务进行测试的时候,为了不断的增加测试用例的覆盖率,这个时候,对于测试用例的管理就成为一个比较重要的问题。如何让自动化测试平台智能读取测试用例的相关数据,然后进行相应的自动化测试,并且测试用例的数据来源可以方便的修改和增加,这个时候如果没有一个完整的自动化测试管理系统平台,这个时候作者的这个小方法就可以试用。因为要考虑到一些手动测人员不懂自动化代码,所以,这时候将测试用例与自动化测试代码完全分离的形式进行,此时采用了Excel文件来保存测试用例的数据。目前Excel文件包含了两种文件格式:一种是.xls,另一种是.xlsx。所以这里也封装的两种不同的方法去解决这一问题。

       针对于97版本之前的.xls格式的Excel文件,这里提供了2种常用的操作方法:1.使用JXL(JavaExcelAPI) 2.使用POI的HSSF之所以提供了2种方式,是因为就作者目前整理的代码来看,各有一些优势,然后代码不足另当别论。JXL只能针对97版本之前的Excel文件进行操作,在其API中提供findcell的方法极为方便查找和定位。POI则是一个对Office操作的完整封装,这里说的HSSF就是POI的一种实现,它也是操作.xls文件的一套成熟API。HSSF提供两种类型的操作,一种是eventmodel,另一种是usermodel,eventmodel是采用sax方式解析,属于Streaming类型的加载,在CPU和memory上占用都比较低,算是比较节省资源的,但是其只支持读操作。usermodel则是采用dom方式加载文件,也就是说它是把整个文件都加载到内存(in memory tree)中,然后进行操作,这样做的优势是效率比较高,但是也相对耗费资源,这种方法对读写操作都支持。其特色是:create sheet/row/cell操作、styling cells操作、delete sheets/cells/rows、shift rows、cloning sheets、formula evaluation、cell comments、pictures操作。


      对于.xlsx文件的操作,POI也给予了XSSF SXSSF两种方式的实现,XSSF的eventmodel也是和HSSF的eventmodel相同的,都是采用了sax方式读取,并且也是只能进行读操作,不能进行其它操作,它对CPU&Memory的占用也是相对比较低的,XSSF的usermodel也是in memory tree的方式,同样支持读写操作和features。在XSSF中,POI又提供了一种扩展,即SXSSF:它是采用buffer streaming的方式,但是这种方法不提供读的操作,其只能进行create sheet/row/cell操作、styling cells操作、pictures操作。它对CPU和memory的开销还是比较低的。


          说了这么上述的这么多方法,现在转回来,为什么要用Excel?因为Excel比较方便,对于不懂自动化测试代码的人员,可以直接在Excel中编写测试用例,修改测试数据,然后由程序去自动的执行测试,对于测试的维护成本还是相对比较低的,还有一个选择Excel的原因就是作者在生成测试用例数据的时候,常会依赖于一些测试工具,这些测试工具对于生成的数据导出时,多数支持Excel格式,这样更方便于测试,节省时间。Junit和testng都提供了注解的方式进行参数测试自动化,所以这也是比较方便的一点。


            这里就不共享代码了,如果有朋友想要的话,可以直接加我QQ,还是保留一点,其实文章写的只是简单的一点点思路,具体的逻辑和想法,没有完全的写出来,只有把这些想法灵活的运用起来才是最关键的,不结合实际情况,这些简单的Excel读写封装是没有特别大的意义的。具体的细节思路暂时保留!如果哪位同事有不同或者更好的见解请直接指出和批评。