2014/12/14 kyon_mm
STA Introduction
kyon_mm
Test Architect
TDD/BDD Expert
27 years old.
Self Introduction
Time Table11:50 : Ice break, deploy, test
13:15 - 14:15 work
14:30 - 15:30 work
15:50 - 16:35 work
16:35 - 17:00 closing
AgendaToday’s Goal
System Test Automation
About today’s Challenge
Geb+Spock
練習する事
目的
効果の高いものに集中する
一通りやってみる
練習する事
目的テスト対象の見極め
テスト設計
優先順位
プロセス
Testing!「あなたたちが持つテスト技術によってこの製品をより良くする」ということが使命です。
今回は手始めにテストレベルが高いものからやってみるという状況で考えてみてください。
Testing!「開発者の怠惰サポート」より「気づきにくい問題の発見」を
「生成可能なテスト」より「生成しづらいテスト」を
「特定コンテキストだけ」より「複数コンテキスト」を
AgendaToday’s Goal
System Test Automation
About today’s Challenge
Geb+Spock
System Test Automation
System Test Automation
System Test
Automation
Process
System testシステム全体を動作させてのテスト。コンポーネントテスト、統合テストでは検出されないようなバグを検出するためのテストになります。自然とJSTQBのようなステージング環境が想定され、実際のシナリオが必要になります。
Test Levelユニット
コンポーネント
統合
システム
受け入れ
Automation設計
実行
レポート
バグ分析
Process計画
設計
実装
実行
Share ToolGoogle SpreadSheet, Document
HipChat, Idobata, Kato.im
GitHub + Issue + Wiki
Paper + Pen
Process計画
設計
実装
実行
Plan「どんなテスト」を「どれくらいの時間」で「何を」「どれくらい網羅」して「どの順番」でやる
リスク分析、対処法、見積もり、実現可能性を合わせて「テストの全体像と進め方」を共有し、今後も変更しやすくしたもの。
Designテストスイートやテストケースの設計。
デシジョンテーブル、状態遷移図で整理したり
「何を」「どれくらい」網羅する
「怪しいところ」を組み合わせる
Implementation実行出来るテストケースを記述する
いわゆるテストを実行する手順を記述する
必要なサポート(クラスや別テーブルなど)も記述する
Executeテストを実行して、結果を見る。
テストを直したり、新しいテストをつくったり
計画に反映したり
プロダクトに反映したり
Process計画
設計
実装
実行
Share ToolGoogle SpreadSheet, Document
HipChat, Idobata, Kato.im
GitHub + Issue + Wiki
Paper + Pen
Testing!「あなたたちが持つテスト技術によってこの製品をより良くする」ということが使命です。
今回は手始めにテストレベルが高いものからやってみるという状況で考えてみてください。
Testing!「開発者の怠惰サポート」より「気づきにくい問題の発見」を
「生成可能なテスト」より「生成しづらいテスト」を
「特定コンテキストだけ」より「複数コンテキスト」を
About today’s Challenge
Challenge
Application
Testing Tool
Test Case Manage
テストケースにタグをつけて管理できるWebGUIアプリ
ログイン認証
未ログイン
トップ
ログイン済み ※ヘッダを介して遷移する
ダッシュボード
ユーザー管理 (管理者用機能)
テストケース
テストタグ
Grails
Groovy
Heroku
Java Postgres SQL
Application Code
Mandrill
Inside Screen画面間の動作は同期
画面内の動作は非同期
未ログインで各ページにアクセスしたら、トップページ表示して、ログイン後に元のページを表示する。
Outside Screen
ユーザー情報を変更するとメール通知がくる
システムのログはherokuに垂れ流している
Tag
name : 250, unique
description : 1000
TestCase
name : 250
scenario : 1000
tags : 0 - n
Userusername
password
email
enabled
Challenge
Application
Testing Tool
Backgroundテストケース専用の管理ツールをつくって今後、テストプロセセスをよくしていきたい。
そのためのプロトタイプができたので、評価してほしい。
継続的な開発をする前提。
Testing!「あなたたちが持つテスト技術によってこの製品をより良くする」ということが使命です。
今回は手始めにテストレベルが高いものからやってみるという状況で考えてみてください。
Testing!「開発者の怠惰サポート」より「気づきにくい問題の発見」を
「生成可能なテスト」より「生成しづらいテスト」を
「特定コンテキストだけ」より「複数コンテキスト」を
Spock
Geb
GroovyでWeb Driverをラップしたライブラリ
Spock
Geb
Groovyでパラメタライズしやすいテスティングフレームワーク
Geb Basic
Test, Page, Module
$(), css selector, jQuery like Navigator
Test, Page, Module
TestClassJUnit,Spock,TestNGを使ってブラウザを動作させるコードを書く JUnit → @Test Spock → extends GebReportingSpec, GebSpec
PageObject
画面毎につくるクラス テストから利用する URL 画面オブジェクト 不変条件 画面に必要な操作
Module
テーブルや、複数画面で共有したい画面オブジェクトを定義する PageObjectの画面オブジェクトに利用する
URL
このページを表示させるURLの相対パスか、絶対パス。 ルートとなるURLはGebConfig.groovyに書く。
at
to TestCasePageやat TestCasePageとしたときにassertする内容 ページの不変条件。
content
ページ中でアクセスする各オブジェクトを定義する。
table
<table>の内容を取る例
General
ヘッダーのような共通的なものを定義する例
Geb Basic
Test, Page, Module
$(), css selector, jQuery like Navigator
Navigator
画面オブジェクトへアクセスするためのクラスや操作のことです。
jQuery like Navigator$(tagName, attribute:value | index)
$(tagName.class, attribute:value | index)
$(“div”, name:”description")
$(“div.main”, name:”description”)
$(“input”, name:”create”)
Geb Infrasrc/test/resources/GebConfig.groovy
baseUrl, wait
Driver
htmlUnit, Chrome, FireFox, IE, PhantomJs
Geb Reference
http://gebish.org
http://kyon-mm.hatenablog.com
Deployhttps://github.com/kyonmm/grabbit
click [deploy to heroku]
input mandrill-api-key
deploy!
Test Project Template
https://github.com/kyonmm/geb-template
download zip OR git clone