AppendixI:参考サイト・参考資料
参考サイト
| ページ名 | URL |
| Selenium 公式HP | http://www.openqa.org/selenium/ |
| Selenium Core 公式HP | http://www.openqa.org/selenium-core/ |
| Selenium IDE 公式HP | http://www.openqa.org/selenium-ide/ |
| Selenium 公式wiki | http://wiki.openqa.org/display/SEL/Home |
| アスキーデジタル用語辞典 | http://yougo.ascii24.com/ |
| IT用語辞典 e-Words | http://e-words.jp/ |
参考資料
- Selenium 0.7 利用手順書(前編/後編)
- Selenium 0.7 日本語リファレンスガイド
AppendixII:DB 初期化処理クラスのソースコード
DB初期化処理を行うためのConnectionMangerクラスとDbInitServletクラスのソースコードを掲載します。
ConnectionManagerクラス
DBとの接続を行うクラスです。DB初期化サーブレットがDBへ接続する際に利用します。DBのURLやuserの設定などを記述します。
package test.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; /** * DBとのコネクションを管理するクラス */ public class ConnectionManager { /*--- 定数設定 -------------------------------------------------*/ /** URL */ private static final String URL = "jdbc:mysql://localhost:3306/myapp "; /** user */ private static final String USER = "testuser"; /** password */ private static final String PASS = "testpass"; /** driver */ private static final String DRIVER = "com.mysql.jdbc.Driver"; /*----------------------------------------------------------------*/ /** デフォルトコンストラクタ */ private ConnectionManager() { } /** * コネクションを取得 * @return Connection */ public static Connection getConnection() { //JDBCドライバの登録 try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { System.out.println( "Caution!!! kenshu.util.ConnectionManager#getConnection():" + "\n\tドライバ(" + DRIVER + ")が見つからないため" + "Connectioinの取得に失敗しました。"); throw new RuntimeException(e); } //DBへの接続 Connection connection = null; try { connection = DriverManager.getConnection(URL, USER, PASS); } catch (SQLException e) { System.out.println( "Caution!!! test.util.ConnectionManager#getConnection():" + "\n\tURL, USER, DRIVERのいずれかが違うため" + "Connectioinの取得に失敗しました。"); throw new RuntimeException(e); } return connection; } /** * コネクションを切断します * @param connection Connection */ public static void disConnect(Connection connection) { try { if (connection != null) { connection.close(); } else { System.err.println( "Caution!!! test.util.ConnectionManager#getConnection():" + "\n\tConnectioinの切断に失敗しました。" + "(引数のConnectionがnull)"); } } catch (SQLException e) { throw new RuntimeException("Connectionの切断に失敗しました。", e); } } }
DbInitServletクラス
DB初期化を行うサーブレットです。DbUnitの機能を用いて、Excelファイルでのデータ初期化を実施します。また、MySQLのAUTO_INCREMENTを初期化するためSQL(ALTER TABLE文)も実施しています。
package test.util; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.util.ArrayList; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.dbunit.database.DatabaseConnection; import org.dbunit.database.statement.SimplePreparedStatement; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.excel.XlsDataSet; import org.dbunit.operation.DatabaseOperation; /** * DBを任意のExcelに従って初期化するサーブレット。 * GETパラメータ「name」の値(Excelファイル名)を読み込む。 */ public class DbInitServlet extends HttpServlet { /*----- 定数設定 ---------------------------------------------*/ /** 初期化Excelファイルを置くフォルダ */ private static final String INIT_XLS_DIR = "/ext/initxls/"; /** 初期化成功時に表示する画面のファイル */ private static final String INIT_OK_FILE = "WEB-INF/init-ok.html"; /** 初期化失敗時に表示する画面のファイル */ private static final String INIT_ERR_FILE = "WEB-INF/init-err.html"; /*------------------------------------------------------------*/ /** * @see javax.servlet.http.HttpServlet * #doGet(javax.servlet.http.HttpServletRequest, * javax.servlet.http.HttpServletResponse) */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("param name:" + request.getParameter("name")); try { // 初期化Excelファイルのパスを設定 String path = INIT_XLS_DIR + request.getParameter("name"); // 初期化メソッドを実行 boolean b = initDb(path); // 初期化成功画面を表示する RequestDispatcher rd = request .getRequestDispatcher(INIT_OK_FILE); rd.forward(request, response); return; } catch (Exception e) { // nameパラメータにExcelファイル名無しなど // 例外発生時はエラー画面を表示する RequestDispatcher rd = request .getRequestDispatcher(INIT_ERR_FILE); rd.forward(request, response); return; } } /** * 初期化メソッド * @param path initExcelFilePath * @return boolean */ private boolean initDb(String path) { try { /* 初期化対象テーブル */ ArrayList tablelist = new ArrayList(); tablelist.add("rental"); tablelist.add("book"); tablelist.add("book_info_category"); tablelist.add("book_info"); tablelist.add("category"); tablelist.add("publisher"); tablelist.add("admin"); /* コネクション生成 */ Connection conn = ConnectionManager.getConnection(); DatabaseConnection dbconn = new DatabaseConnection(conn); // テーブルのDELETEとAUTO_INCREMENTの初期化実行 String tablename; for (int i = 0; i < tablelist.size(); i++) { tablename = (String) tablelist.get(i); String sql = "DELETE FROM " + tablename + ";"; //System.out.println("delete table data.. SQL: " + sql); SimplePreparedStatement st = new SimplePreparedStatement(sql , conn); st.addBatch(); st.executeBatch(); sql = "ALTER TABLE " + tablename + " AUTO_INCREMENT=0;"; //System.out.println("init auto_increment..SQL: " + sql); st = new SimplePreparedStatement(sql , conn); st.addBatch(); st.executeBatch(); } // Excelから初期化データを投入 InputStream is = this.getClass().getClassLoader() .getResourceAsStream(path); IDataSet initDataSet = new XlsDataSet(is); DatabaseOperation.CLEAN_INSERT.execute(dbconn, initDataSet); conn.close(); dbconn.close(); return true; } catch (Exception e) { throw new RuntimeException(e); } } }
まとめ
Webアプリケーション用テストツールSeleniumを使ったテストケースの書き方のTipsと、DB初期化のノウハウについて解説してきました。『Selenium 0.7利用手順書』(前編/後編)と併せて、再帰試験(リグレッションテスト)による品質アップに役立ててください。
