狠狠撸

狠狠撸Share a Scribd company logo
FEST-Swing で Festival !!! よう (@youchan)
自己紹介 ようです! イケメン CTO でおなじみの 株式会社アプレッソで働いてます。 DataSpider という EAI のソフトの開発をしています。
Agenda GUI のテスティングとは? FEST-Swing + TestNG DataSpider チームにおける GUI テスト Inside   FEST-Swing まとめ
Agenda GUI のテスティングとは? FEST-Swing + TestNG DataSpider チームにおける GUI テスト Inside   FEST-Swing まとめ
経緯 ユニットテストによる自動テスト GUI のテスティングとは? 単純なユーザー操作で見つかる不具合も検出できない。
経緯 テスト仕様書を作成して 手動でテスト GUI のテスティングとは? テストのコスト増加
経緯 テスト仕様書を元に GUI の自動テスト GUI のテスティングとは? GUI のオートメーションテスト
GUI のテスティングとは? Unit テストではカバーすることのできない、ユーザーの操作とビューの検証 ? ユーザーの操作をエミュレートすることによって、よりユーザーに近い部分での不具合を早期に発見 手間のかかる GUI のテストを自動化 ユーザーの操作を再現するため、シナリオ的なテスト GUI のテスティングとは?
Agenda GUI のテスティングとは? FEST-Swing + TestNG DataSpider チームにおける GUI テスト Inside   FEST-Swing まとめ
GUI テストに求められるもの ユーザー操作の自動化 よりユーザーの操作に近い再現性 コンポーネントレベルの記述性 ビューの検証 モデルの検証 ユーザー操作をシナリオ的に実行 FEST-Swing + TestNG
GUI テストのツール Java のツール Swing 用と SWT 用とで分かれる。 SWT は SWT 自体に GUI テストの仕組みがある。 Swing のツール Abbot FEST-Swing UISpec4J SwingUnit Fest-Swing + TestNG
FEST-Swing の選定の決め手 開発のアクティビティ ? ?  SwingUnit ? ?  Abbot 開発が終了していた API の使いやすさ ? ?  UISpec4J ? カスタムの ToolKit を使っていて DataSpider では使えなかった Fest-Swing + TestNG
TestNG の採用 シナリオ的にテストケースを実行するために、 TestNG を採用した。 Fest-Swing + TestNG JUnit4 TestNG グループ ○ ○ 依存関係 × ○ ステートフル × ○
Agenda GUI のテスティングとは? FEST-Swing + TestNG DataSpider チームにおける GUI テスト Inside   FEST-Swing まとめ
DataSpiderTestBench DataSpider Client を起動し、 Client を操作するためのテストベンチを作成した。 コンポーネントは Client の JFrame からすべて検索することが出来る。 DataSpider チームにおける GUI テスト
起動のシーケンス DataSpider チームにおける GUI テスト
TestNG によるシナリオ実行 TestNG ではグループと依存関係を記述することが出来る。 DataSpider チームにおける GUI テスト @Test(groups = { "Group1" }) public void TestCase1() throws Exception { ?? ? // description of test case } @Test(groups = { "Group1" },  dependsOnMethods = { "TestCase1" } ) public void TestCase2() throws Exception { ?? ? // description of test case }
TestNG によるシナリオ実行 グループ間の依存関係を記述することが出来る。 DataSpider チームにおける GUI テスト @Test(groups = { "Group1" }) public void TestCase1() throws Exception { ?? ? // description of test case } @Test(groups = { "Group2" },  dependsOnGroups = { "Group1" } , alwaysRun = true) public void TestCase2() throws Exception { ?? ? // description of test case }
TestNG によるシナリオ実行 DataSpider チームにおける GUI テスト
EDT とウェイト処理 DataSpider チームにおける GUI テスト 名前による検索 あらかじめ setName() で名前をつけておく クラスによる検索 同じクラスのコンポーネントが複数存在しない場合に有効 ラベルなどの Text プロパティによる検索 ラベルに関連付けられたコンポーネントは setLabelFor() しておく その他 関連付けられているモデルなどから
コンポーネントの検索 DataSpider チームにおける GUI テスト ソースコード参照
EDT とウェイト処理 DataSpider チームにおける GUI テスト
EDT とウェイト処理 DataSpider チームにおける GUI テスト ソースコード参照
Agenda GUI のテスティングとは? FEST-Swing + TestNG DataSpider チームにおける GUI テスト Inside   FEST-Swing まとめ
ComponentFixture Inside FEST-Swing
java.awt.Robot Inside FEST-Swing
Agenda GUI のテスティングとは? FEST-Swing + TestNG DataSpider チームにおける GUI テスト Inside   FEST-Swing まとめ
GUI テストの守備範囲 シナリオ的なテストになるので、ユニットテストとはフェーズが異なる。 QA チームが従来行っていた GUI の状態など、手作業ではコストもかかり、不確実なところに適用できる。 まとめ
課題 操作感といったところまで踏み込んでテストすることはできない。 自動化出来ない テスト作成のコストが大きい。 ユーザー操作の自動記録の機能がほしい あるいは DSL 的なアプローチ(テスト仕様書) まとめ

More Related Content

贵贰厂罢-厂飞颈苍驳で贵别蝉迟颈惫补濒!