TestNG框架使用

一、简介

       最近公司产品应客户要求,需要做安全加固:由IBM Security AppScan Standard软件进行扫描,针对扫描结果报告中的问题,进行修复。由于公司产品使用时间较长,其整个Dao层没有采用Hibernate等流行的ORM框架,而使用原生JDBC封装并且直接使用简单字符串拼接形成增删改查SQL语句,所以被扫描出大量SQL盲注的漏洞。

二、解决方案

       1、修改整个DAO层。使用PreparedStatement,采用预编译的方式防止SQL盲注。

       2、由于DAO层属于产品的核心层,如此大规模的修改底层结构,需要进行详细测试,保证产品应用层的功能正常,所以采用TestNG+DBUnit测试框架,对DAO层的每处修改进行测试,保证DAO层的正确性。

三、具体实现

       1、利用Java类文件名大小写敏感的语法特性,创建与原DAO类文件相同名字(Dao-->DAO)的类文件。覆写所有在产品中应用到的DAO方法,采用相对安全的SQL语句。

       2、由于产品中使用的近百张表,所有手动构建测试数据,工作量异常繁琐,并且容易出错,所以利用VO文件与数据库表名的固定对应关系,使用反射机制动态生成测试数据。

       3、利用产品中的通用数据库连接池功能模块,通过配置测试数据库的配置信息,供测试类方法调用。

       4、将DAO测试类通用的方法,如:测试方法调用前,资源的准备;测试方法调用后,资源的释放。通过TestNG的@BeforeMethod与@AfterMethod注解,进行配置调用。

四、详细代码

        1、代码列表

         ConnectionPool.java

         BasicConnectionPoolTestUtil.java(为DBUnit提供数据源)

         testdb.properties

         testng-dao.xml

         DaoTestSuite.java

         AlarmValue.java(VO)

         BaseDAO.java

         AlarmDAO.java(原DAO)

         AlarmDao.java(新DAO)

         AlarmDaoTest.java

         2、源代码(详情查看附件)

        

         

你可能感兴趣的:(dbunit,TestNG)