SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
キーワード駆動テストを実践した話
まずは作ってみた編
実践の背景
 定期的に同じ操作のテストを繰り返していた
 約 30 時間
 依頼通りに値が設定されてることを検証する必要があった
 約 20 時間
 テストデータは間違いなく入力する必要があった
 間違えたらやり直し
 間違いなく入力されていることを検証(受入)する必要があった
 テストコードを書ける人がいなかった
ビジネス要求
 同じテスト内容を何度も繰り返し入力したくない
 受入検証で誤ったテストを発見するような運用はやめたい
 例え誤りを発見しても、迅速に修正、短時間で再実行したい
 テストコードを書けない人でも自動テストを実装出来るようにしたい
機能要求
 1つのテストケースで何度も同じテストを実施出来なければならない
 テストは自動実行される必要がある
 テストの実施中にテストの合否を誤りなく判定しなければならない
 誤りがあったテストケースだけを実行出来る仕組みが必要である
 キーワード駆動テスト手法を採用しなければならない
 さらに、テストケース表は自然言語で記述される必要がある
ユースケース
 テストケース取り込み、実行、合否判定、結果報告
 POI
 TestNG
 DataProvider 、Suite、Assertion、Report
 実行有無の判定処理の追加
 Maven
 キーワード駆動テスト専用のテストケース表の作成
 テスト対象への自然言語による操作を、テストシステムが処理可能な形に変換する
テストケース表の作成
作ったもの1
 テストシステムの構造
テストシステムビルダー
テストランナー
テストケースローダ キーワードエンジン
テストケースファイル
テストステップファイル
ロケータ リポーター
作ったもの2
 テストケースファイル
作ったもの3
 テストステップファイル
成果
 同じ内容のテストを繰り返し操作しなくて済むようになった
 受入検証ではテスト結果と証跡を確認するだけで済むようになった
 テストシステムが意図した通りに動作することが保証されている為
 誰でも自動テストを実装出来るようになった
 さらに
 ちょっとしたテストデータの変更にも対応できるようになった
課題1
 適切なキーワードの実装方法が分からなかった
 汎用性の高いキーワードはテストケースが長くなり、テストケースが短くする為に
キーワードの独自性を強めると汎用性に欠けて再利用性の低いキーワードが増えて
しまった
 非常に脆いテストになった
 WebElementの変更を伴う改修があると、テストケース表毎にロケータを書き直す必
要があった
課題2
 テストの実装よりテストシステムの実装に工数を取られた
 マルチブラウザのテストを独自に実装する必要があった
 ブラウザのバージョンアップに合わせて、対応するドライバのバージョンに合わせるのが大変だっ
た
 ブラウザの種類によりスクリーンショットの範囲が異なる
 ブラウザ間の差異の比較が出来なかった
 失敗したテストの原因を特定する為に適切なロギングを設計する必要があった
 テストの実行を並列化出来ず、実行に時間が掛かってしまった
 テストの実行により画面を占有されてしまい、別の端末が必要になった
 正しいテストシステムの構造、必要な機能が分からなかった
 テストシステムの目的が不明確だった
対応方針1
 適切なキーワードの実装方法
 自分で考えた
 保守性と拡張性の為に、オブジェクトとして実装する
 キーワード駆動テストを実践している方に聞いた
 システムテストでは、対象とするドメインの用語をキーワードとすると良い
 デザインパターンからヒントを得た
 クラス階層と機能階層を分離するBridgeパターン
 オブジェクトをコマンド化するCommand パターン…etc
 オブジェクト設計方法からヒントを得た
 ICONIXのドメイン分析手法から、オブジェクトを抽出、設計する手法を参考にする
 非常に脆いテスト
 テストケース表のロケータが、テスト対象システムと同期する様にする
対応方針2
 テストシステムの実装に工数を取られた
 以下をPitaliumに委譲する
 マルチブラウザテスト対応
 スクリーンショットの範囲補正、取得
 テストログ(stacktrace含む)取得
 テストのマルチスレッド実行
 以下をJava Service Wrapperを利用してdaemon(サービス)化する
 Selenium Grid Node / Selenium Grid Hub
 正しいテストシステムの構造、必要な機能
 JUnitやSeleniumを使わないテストシステムの構造を参考にする
 テストシステムの目的を明確化する
 OOADの実践プロセスを参考に、要求に応じた設計をする

Mais conteúdo relacionado

Mais de Naoya Kojima

What’s Next For Selenium?
What’s Next For Selenium?What’s Next For Selenium?
What’s Next For Selenium?Naoya Kojima
 
Automated Analytics Testing
Automated Analytics TestingAutomated Analytics Testing
Automated Analytics TestingNaoya Kojima
 
20170710 hifive-test-meetup
20170710 hifive-test-meetup20170710 hifive-test-meetup
20170710 hifive-test-meetupNaoya Kojima
 
JJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPAJJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPANaoya Kojima
 
JJUG CCC 2017 Spring LT about Twice Submit
JJUG CCC 2017 Spring LT about  Twice SubmitJJUG CCC 2017 Spring LT about  Twice Submit
JJUG CCC 2017 Spring LT about Twice SubmitNaoya Kojima
 
20161222 selenium adventcalender
20161222 selenium adventcalender20161222 selenium adventcalender
20161222 selenium adventcalenderNaoya Kojima
 
20161212 selenium adventcalender
20161212 selenium adventcalender20161212 selenium adventcalender
20161212 selenium adventcalenderNaoya Kojima
 
jjug_night_20161121
jjug_night_20161121jjug_night_20161121
jjug_night_20161121Naoya Kojima
 
Azureを使って手軽にブラウザテストの自動化をはじめよう
Azureを使って手軽にブラウザテストの自動化をはじめようAzureを使って手軽にブラウザテストの自動化をはじめよう
Azureを使って手軽にブラウザテストの自動化をはじめようNaoya Kojima
 

Mais de Naoya Kojima (9)

What’s Next For Selenium?
What’s Next For Selenium?What’s Next For Selenium?
What’s Next For Selenium?
 
Automated Analytics Testing
Automated Analytics TestingAutomated Analytics Testing
Automated Analytics Testing
 
20170710 hifive-test-meetup
20170710 hifive-test-meetup20170710 hifive-test-meetup
20170710 hifive-test-meetup
 
JJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPAJJUG CCC 2017 Spring LT about JPA
JJUG CCC 2017 Spring LT about JPA
 
JJUG CCC 2017 Spring LT about Twice Submit
JJUG CCC 2017 Spring LT about  Twice SubmitJJUG CCC 2017 Spring LT about  Twice Submit
JJUG CCC 2017 Spring LT about Twice Submit
 
20161222 selenium adventcalender
20161222 selenium adventcalender20161222 selenium adventcalender
20161222 selenium adventcalender
 
20161212 selenium adventcalender
20161212 selenium adventcalender20161212 selenium adventcalender
20161212 selenium adventcalender
 
jjug_night_20161121
jjug_night_20161121jjug_night_20161121
jjug_night_20161121
 
Azureを使って手軽にブラウザテストの自動化をはじめよう
Azureを使って手軽にブラウザテストの自動化をはじめようAzureを使って手軽にブラウザテストの自動化をはじめよう
Azureを使って手軽にブラウザテストの自動化をはじめよう
 

20161218 selenium study4-part1