FEST-SwingでFestival!
Upcoming SlideShare
Loading in...5
×
 

FEST-SwingでFestival!

on

  • 2,061 views

第7回 xUnit Test Patterns(xUTP)読書会(http://atnd.org/events/1835)で発表した、GUIテストについての資料です。

第7回 xUnit Test Patterns(xUTP)読書会(http://atnd.org/events/1835)で発表した、GUIテストについての資料です。

Statistics

Views

Total Views
2,061
Views on SlideShare
1,709
Embed Views
352

Actions

Likes
0
Downloads
6
Comments
0

6 Embeds 352

http://blog.livedoor.jp 296
http://dstn.appresso.com 39
http://dstn2.appresso.com 11
http://www.slideshare.net 4
http://74.125.153.132 1
http://localhost 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

FEST-SwingでFestival! FEST-SwingでFestival! Presentation Transcript

  • FEST-Swing で Festival !!! よう (@youchan)
  • 自己紹介
      • ようです!
      • イケメン CTO でおなじみの
      • 株式会社アプレッソで働いてます。
      • DataSpider という EAI のソフトの開発をしています。
  • Agenda
      • GUI のテスティングとは?
      • FEST-Swing + TestNG
      • DataSpider チームにおける GUI テスト
      • Inside   FEST-Swing
      • まとめ
    View slide
  • Agenda
      • GUI のテスティングとは?
      • FEST-Swing + TestNG
      • DataSpider チームにおける GUI テスト
      • Inside   FEST-Swing
      • まとめ
    View slide
  • 経緯
    • ユニットテストによる自動テスト
    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 的なアプローチ(テスト仕様書)
    まとめ