システムテスト自動化カンファレンス2013
http://kokucheese.com/event/index/118294/
行ったので書く。
公開されたスライドはここで見られるっぽい。
https://sites.google.com/site/testautomationresearch/event#TOC-2013-
まとめとか、感じたこと。
・システムテストの自動化で何が解決できるか考える。
・ROIを考え自動化するのがハッピーならばやる。ROI評価のコストも考慮する。
・手動テストと自動テストは主にコストの発生タイミングが変わることを考慮する。
・自動化やりすぎ自動化ハイに気をつける。なんのためのテストなのか。
・AndroidテスティングはRobotuimおすすめ。非エンジニアならMonkeyTalkおすすめ。
・受け入れテスト駆動開発は、誰にとっての受け入れかを考える。ユーザーがテストスクリプトを書けるのか問題。
・シナリオBDD系ツールのCucumber、Spec系BDD系ツールのRspec
・業務モデルからテスト詳細設計を起こすやりかたもある。
・モデルには、状態遷移モデル、論理モデル、組み合わせモデルがある。
・ツールにはAstash(有償)、CEGTest、Pictmaster等がある
・単純操作のテストは自動化に向いている。
・設計実装の段階でテストしやすいかを考慮する。一意のID、Classを振る
・HPのQTP+ALMは色々できる。それなりに高いので大規模PJでないと見合わない。
以下発表のメモ。敬称略。
「よりよいテスト自動化のためにちょっと考えてみませんか?
―スコープ、ROI、プロセスを中心に―」近江 久美子
ROIの評価
品質・コスト・スコープ
ツール、テストプロセス、人、プロダクト
・手動テストと違って、初期コストと運用コストが異なる
・ツールは外部のものか内部のものか
・自動化すると、必要なプロセス・人材が変わる
・自動化するための制約
評価
・ROI評価にこだわりすぎてしまって割高になってしまわないように、必要な部分のみ
プロセスを見直す
手動テストと自動テストで変わるものはなにか
テスト実行の例
実行するための設計・実装・セットアップ、そのための構成管理は増える
実行する、レポートを作るを手間は減る
テスト条件は事前に確定させる必要
・負荷が変わるもの
・タイミングが変わるもの
スキル、チーム
テスト自動化に必要なもの
プログラミング、テスト、プロジェクト管理、
・自動化されたテスト実行のバグの分析
結果で分類
テスト対象のバグ
テストのバグ
原因による分類
プログラムの問題
環境の問題
スクリプトの問題
テストツールの問題
「事例から見るテスト自動化のポイント」TABOK関西
自動化のパターン
1,部分的な自動化
2,システム肥大化
3,システム不適合
4,過剰な自動化
ファクトリオートメーション
信頼性が最も重要視する
システムテスト自動化の歩み
思ったより効果がなかったとき
テスト設計の観点
多品種大量生産
既存システムの強化
新システムの展開
自動化の前に、テストとしての認識を持つ
不健全な数値目標は捨てる
自動化の難しさ
従来、人がやる仕事は、すごく賢いし、情報の流れとかは見えてこない
無意識にやってることは見えるようにすることすら難しい
成功の秘訣
生産システムは構造化設計されている
プロセス全体の流れが最適になるようになっている
現場には効果計測振り返りをベースにした、たゆまぬ改善がある
無意識の意識化
テスト自動化に必要な技術の整理
テストシステムとして最適化・構造化
テスト工程の自動化を行う未来
自動化とは?
「機会にできることは機会に任せ、人間はより創造的な分野で活動を楽しむべきである」オムロン創業者
「スマートフォンアプリのテスト自動化をはじめよう」長谷川 孝二 @nowsprinting
http://www.slideshare.net/nowsprinting/starcon2013-mobile-testautomationkeynote6
テスト自動化の現状
ユニットテスト
Ios
Xcode標準にOCUUnit
android
AndroidTestingFramework
UI操作のRobotium
Mockito、EasyMock、Robolectric
システムテスト
理想の高い利益
正しい画面表示
OS機種依存バグを検出できる
投資
ツール
スクリプト
保守
データ、スタブサーバー
現実的な利益
テスト実行時間の短縮
複数のOSバージョンで実行できる
テストの目的
血管を摘出
品質レベルが十分か
意思決定のための情報
欠陥の作り込み
欲張らないROI
頑張らないテストスクリプト
乱数起因のテストはユニットテストでモックで頑張る方が楽
レイアウト崩れを頑張ろうとするとつらい
機種依存の問題を狙ってテストしようとしない
頑張らない事例
UIAlertView
UIPickerView
UITableView
AndroidのDrawRect
Viewのヒエラルキーが多い時に、ソフトウェアキーボードが出るとStackOverFlowError
抑えたいポイント
すべての画面遷移、ハッピーケースだけじゃなくエラーケースも含める
CIにのせたときとかのSSの比較はImageMagickなどで自動化する
実行時間もかかるから、テストケースの絞込は意識する
利益を拡大する
テスト実行時間の短縮
4−6習慣でリリースするのが理想
複数OSバージョンでの実行
テスト実行環境を増やす
手動ではできないこと
ロードテスト
メモリリーク
低メモリ
コンカレンシーテスト
再現率低いテスト
Android MonkeyRunner
Androdi Robotuium
Seliumライクにかける
端末回転、スクリーンショットとかかとれる
UiautoMator
Robotuiumuより楽になってる
Espresso
Android
IOS
UIAutomation
Xcode同梱
Appium
両刀
スクリプトとでかける
Calabash
CucumberのテストをIos/Androidで実行できる
MonkeyTalk
専用のIDEでテスト作れる。スクリプト詳しくなくてもいける
選定のポイント
スクリプトを書けるかどうか
Ios/androidでテストを共有したいか
何が実行できるか、の差は縮まりつつある
Genymotion(早いエミュレーター
MonkeyTalkデモ
TestFlight
AppKitBoxRemoteTestKit
まとめ
欲張らない
頑張らない
MonkeyTalkではWebViewのテストもできる
「ATDD実践入門」きょん@Kyon_mm
テストなくしたいからテスト勉強してる
ATDD→受け入れテスト駆動開発
TDD
KentBeck
レッド、グリーン、リファクタリング
UncleBob
失敗するテストを書く、失敗するなら追加してはいけない、成功させるプロダクトがあるならプロダクト
T_wada
開発の健全さを保つプラクティス
レッド、グリーン、リファクタリングを回す
Kyon−mm
開発者支援フレームワーク
開発者の意図を確認する、開発者が心地よいコードを書く
Fit/Fitness
BDD
常にユーザーの立場でテストを実装する
実装のテストをしてしまうのはよくない
シナリオBDD
Cucunber
SpecBDD
Rspec
Scrum
Readyの定義、Doneの定義
SpecificationByExsample
仕様を例示する生きたドキュメント
ATDDはハッピーケースに限定するわけじゃない
目的
ユーザーと共通の一枚絵のようなものを得ること
十分に対象のソフトウェアの仕様を把握できること
その仕様が満たせているかどうかがいつでもわかること
Fitness
シナリオBDD
Cucumber
SpecFlow
Spec
Rspec
Spock
Groovyによって実装されたフレームワーク
アンチパターン
開発者がAcceptanceTestを書くことはいけない
補助者する人がいない
理想と現実
DDDとATDD
ATDDはユビキタス言語(お客様がわかる言い方)を得られる機会にはなるが、ドメインモデリングには適さない
Role
開発者が行うATDDはSTDDにしかならない。Userが理解できる言葉でのみ実装されたものこそである、しかしほんとうにそれはできるか?
まとめ
誰にとてのAccptanceTestなのか
XDDはツールではなく、プロセスと態度で決まるもの
コンテキストに合わせて取り組まなくてはいけない。現状ではXPを実践できるチームの成果物でしかない
ATDDはやらないよりましだが、間違うと自分たちの生産性を下げる
開発者向けの範囲でより広いTDDを考える GOOS By Stev
テストケースの設計を考える方法 ソフトウェアテスト技法
最高のATDDをやりたい人 つくりましょう
「モデルベースドテスト入門ーテスト詳細設計」 朱峰 錦司(あけみねきんじ)@kjstylepp
http://www.slideshare.net/kjstylepp/ss-28784815
内容
テスト詳細設計お自動化できる
設計モデルから作ります
デモします
テストとは
JSTQBでの定義
テスト分析と設計
テスト実装と実行
終了基準の評価とレポート
Test.SSFでの定義
テストの要求分析
テストアーキテクチャ設計
その先は同じ
テスト詳細設計
方針にもとづいてテスト対象の仕様からテストケースを作る作業
方針や仕様が決まっていれば自動でつくれるんじゃね!?
モデル
テスト対象の振る舞いや正スツを到底の観点抽象化して表現したもの
ひとつのモデルで全ての仕様を表現することはできない
・状態遷移モデル
・論理モデル
・組み合わせモデル
・フローモデル
・台数モデル
状態遷移モデル
状態の変化に着目してシステムの振る舞いをモデリング
論理モデル
構成要素間の論理関係に着もk空いてロジックをモデリング
組み合わせモデル
構成要素のバリエーションや制約に着もk水、構成要素間の組み合わせ元をモデリング
注意点
特性に応じて適切なモデリング手法を選択
モデルベースドテスト
モデルを活用してテスト成果物を作成(ブラックボックステストになる
モデル→抽象化されたテスト→実行可能なテスト
テストの抽象表現
テストモデリングのための規格
UML Testing Profile
Testing and ContorolNotation version3
状態遷移列にによるテストシナリオ
論理パターンによるテストシナリオ
組み合わせパターンによるテスト条件
注意点
テストパターンが多くなる
詳細化が必要
モデルベースドテストの適用例とツールデモ
状態遷移テスト
Astash品質スイートの活用(有償
論理モデル
デシジョンテーブルテスト
CEGTestの活用
組み合わせテスト
Pictmasterの活用
導入のポイント
設計モデルの記述によるメリット
自動化によるメリット
必要なスキル
モデルベースドテストのスコープ
まとめ
テスト対象の理解
ミス防止
テストエンジニアが書くしかない
まずモデリングからしていこう
「手動テストからの移行大作戦」浦山 さつき
テストつまらない
刺し身たんぽぽのテスト→自動化に向いてます
なぜ定着しなかったのか
よく止まる
バグが出そうなやつを自動化
時間の制約があるものを自動化した
→スコープを間違えた
作った人にしかわからない
→可読性が低かった
テスト自動化システムの3要素と照らし合わせる
入力値が曖昧→テストケースのフォーマット改修
操作内容があいまい→1通りの操作をトレース
判定方法があいまい→どんなときに・どこが・どうであればを決める
わかりやすいログ
「激しいUI変更との戦い」玉川 紘子
http://www.slideshare.net/hirokotamagawa/20131201-lt
自動テストの保守性を高めるにはどうするか
なぜ保守が大変なのか
テストしづらい製品コードは指摘する
要素にIDClassがない
純粋なテスト対象を切り分けられない
テストケースのもとをメンテナンスする
テスト対処のアプリケーションと会話するための基本動作を定義する
スクリプトの元をメンテナンスできるようにする
「テスト自動化の事例紹介による有償ツール選択のポイント」藤井 暢人
投資したら取り返す!
HP所属
短期間でROIのを得られた事例
ツール
QTP;GUIのテスト実行の自動化
ALM;QTPスクリプトの管理、レポート
ポイント
QTPスクリプトのメンテナンス
QTP+ALMの連携
デモ
がんばるところを間違えずに自動化しよう
テスト自動化の目的を実現できる投資を見極める
有償ツールの昨日は、ツール連携、サービスも確認しよう
「組み込み開発での実機テストの自動化」井芹 洋輝
http://www.slideshare.net/goyoki/ss-28809804
組み込み開発の制約
リアルタイム性
物理的なインターフェース
実行環境が変わる
内部観測井の低さ
テストの責務を分散する
テスト自動化の負荷を分散する
「テスト自動化のこれまでとこれから」辰巳 敬三
http://www.slideshare.net/Bugler/2013-28786846
テスト自動化のこれまで
テスト自動化の今
テスト自動化のこれから
Seleniumの名前の由来
Selenium、セレン
水銀中毒 MercuryPoisoning
JasonHuggins MerecuryPoisonを治療するSelenium
まとめ
テスト自動化の歴史は古いが、専門家され始めてから15年程度
自動化はテスト技術者の必須知識。開発に関わる
ツールを使うだけではなく、自動化ノウハウを方法論としてまとめたり、新しいツール開発を行うこと