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、源代碼(詳情查看附件)

        

         

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章