Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
チームで取り組むテスト設計_演習資料
Search
Akira Ikeda
June 30, 2008
Technology
1
790
チームで取り組むテスト設計_演習資料
・技術コミュニティの無償(または会場費等実費)に て開催される勉強会で、無償でお使いいただけるよ うに公開するものです。
・内容は2008年6月時点のものです
Akira Ikeda
June 30, 2008
Tweet
Share
More Decks by Akira Ikeda
See All by Akira Ikeda
JaSST'24 Kyushu 基調講演 「一周まわって考えるソフトウェアテストへのマインドマップの利用」
ikedon
0
530
それって技術の仕事!? 仕様の輻輳問題(SS2023in仙台 FPセッション)
ikedon
0
28
長崎ビジネスDX "SAIZENSEN" 長崎の未来 ~私達の活動の先にあるもの~ ポジショントーク資料
ikedon
0
11
米国修士課程ベストセラーに学ぶ体系的ソフトウェアエンジニアリングの必要性
ikedon
0
15
テスト設計技法、その前に ~フェイスアップ、次にビルドアップ、その先にマインドアップ~
ikedon
0
8
単なる仕様チェックを卒業してテスト技術力を高めていくために ~押さえておきたいキホンのキ~
ikedon
0
33
IV&Vの概要 ~JAXA様発行「IV&Vガイド【虎の巻】」第1~2部の要約~
ikedon
1
370
OSGi概要
ikedon
1
1.2k
親子で使おうマインドマップ
ikedon
0
16
Other Decks in Technology
See All in Technology
Server-Side Engineer of LINE Sukimani
lycorp_recruit_jp
0
360
サーバーなしでWordPress運用、できますよ。
sogaoh
PRO
0
120
Work as an App Engineer
lycorp_recruit_jp
0
370
[Oracle TechNight#85] Oracle Autonomous Databaseを使ったAI活用入門
oracle4engineer
PRO
1
130
プロダクト開発を加速させるためのQA文化の築き方 / How to build QA culture to accelerate product development
mii3king
1
290
コンテナセキュリティのためのLandlock入門
nullpo_head
2
330
AWS環境におけるランサムウェア攻撃対策の設計
nrinetcom
PRO
0
170
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
120
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
5
680
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
120
3年でバックエンドエンジニアが5倍に増えても破綻しなかったアーキテクチャ そして、これから / Software architecture that scales even with a 5x increase in backend engineers in 3 years
euglena1215
9
3.6k
AWS re:Invent 2024 ふりかえり勉強会
yhana
0
470
Featured
See All Featured
Building Applications with DynamoDB
mza
91
6.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.1k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
YesSQL, Process and Tooling at Scale
rocio
170
14k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
170
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
The Pragmatic Product Professional
lauravandoore
32
6.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.4k
Transcript
チームで取り組むテスト設計 演習資料 池田 暁 © Akira Ikeda 1 2008年6月
Web公開にあたってのご注意 技術コミュニティの無償(または会場費等実費)に て開催される勉強会で、無償でお使いいただけるよ うに公開するものです 本資料を企業によるセミナ等商用利用等金銭を得る 行為に利用することを堅く禁じます 利用に当たって本資料の改編を禁じます
本資料の無断転載を禁じます 利用時は本資料の引用元を明らかにして下さい 内容は2008年6月時点のものです 2008年6月 © Akira Ikeda 2
はじめに 演習の基本的なコンセプト チームでの協業 講師からの一方的なTTではなく,各自が持つ知識を結集す ることで問題を解決する 演習のGoal
知る テスト設計を知る テスト設計に影響を与える要素を知る テストプロセスを知る 体験する 知識を実践して身につける チームの一員としての協業のあり方を学ぶ バックグラウンドの違うメンバとの交流から視野を広げる 2008年6月 © Akira Ikeda 3
普段どのようにテストしてますか? テストは頭を使う作業である 主なテストベースは設計者が検討を重ね作りこんだ仕様書など その仕様書に対して、さらに頭を使って静的テストを実施 それら静的テストを合格したテストベースをもとに,実現されたソフト ウェアのどこにバグが潜んでいるかを考えテストケースを作成する
テスト初級者にありがちなケース 仕様書から直接Excelシートの表にテストケースを書く 多くの場合、文言の変換しか行われない 転記作業に陥り,仕様書の内容を吟味しない 表を埋めるために,適当に数値を変えて水増し(境界値分析の意識なし) ベテランはどうしているか 仕様書を分析し,戦略を立て,設計し,最終的にテストケースに落とし 込む 過去の経験の再利用や,網羅性の確保と観点の抜けの防止の努力をする 2008年6月 © Akira Ikeda 4
テスト設計は普及した??? 2007年からテスト設計の勉強会や講演が増えている ソフトウェア・テストPRESSなどの雑誌記事でも目にする機 会が増えている 言葉としては広まっているような感触がある ただ・・・
テスト設計という工程に影響を与えるさまざまなこと についてはあまり認識されていない 工程はつながっている! 2008年6月 © Akira Ikeda 5
テストプロセスの1例 テストの作業は次のように進められる 仕様分析 仕様書等のテストベースを分析する 実施すべきテストの種類,テストの終了/判断基準,人員/環境など
テスト計画(戦略) 仕様分析での情報を具体的な計画として起こしていく テスト設計 テストの計画にしたがって,テスト観点やテスト項目を作成する テスト実装 テスト設計にしたがって,テストケースを作成する テスト実行 テストケースを実際に実行し,テストログを作成するとともに,必 要があればインシデントレポートを発行し,管理する テスト報告 テストが終了したら,テストドキュメントをもとに報告書を作成し, 報告を行う 2008年6月 © Akira Ikeda 6
仕様分析に入る前にも工程は存在する 仕様分析に入る前に,テストチームがビルドされる 1人で全部やるなら別ですが・・・ テストチームビルディングの工程もテスト設計に影響を与 える 組込み系のテストしか経験のないチームがエンプラ系をテストする
場合どうなる? 当然,苦手なりに戦略を立てなければならない 今の経験でやれるところとやれないところをわからないといけない テスト人員の集合 = テストチーム としていいのか? テスト人員の集合からテストチームへの変換作業が必要 テストチームの目的や能力など把握する必要がある テストチームの能力を定義することで,得意なテスト,不得意なテストがわかる 非常に限られた時間でテストする場合,不得意なテストを行うと効率は??? 変換作業が行われないテスト人員の集合は単なる烏合の衆 たまたま梁山泊であることはほぼない 2008年6月 © Akira Ikeda 7
本演習の流れ テストチームのビルディング メンバのスキル把握とメンバのロール定義 上記を総合して,チームを定義する 仕様分析
テスト対象となる仕様を分析 テスト対象となるテストベースをテストするということ テスト計画(戦略) テストをどのように進めるか,テスト設計のための戦略を検 討する チームの能力を勘案して,テストアプローチを決める テスト設計 計画と戦略に従ってテスト設計を行う テスト実装 テスト設計の結果にしたがって,テストケースを作成する 2008年6月 © Akira Ikeda 8
演習の注意点 チームでの作業です! 誰か一人だけの意見が“全て”にならないように メンバ全員に均等に発言の機会を チームとしての結論は,メンバ全員の合意が得られること
作業を進める上で,お互いメンバを思いやること 経験年数やスキルの程度で上下関係を作らない 同じGoalを目指す同士であることを意識すること チームリーダは以上をきちんとモデレートしてください 他のチームの偵察はダメ! わからないことなどを他のチームに聞くのはダメ 聞き耳をたてず,目の前にあることに集中しましょう 休憩は適宜 休憩は作業の進行具合で各チームにて判断下さい 2008年6月 © Akira Ikeda 9
STEP 0 演習のシチュエーション 2008年6月 © Akira Ikeda 10
皆さんはある日集められた人たちです 朝出社したら,偉い人に呼ばれてこう告げられました 「あ,お前今日はテストチームな.よろしくやってくれ」 「とりあえず,ここに行ったら他にも何人かいるから」 わけもわからず場所に行ってみたら,今同じ班の人がいました
ほとんど初対面,どんな人かもよくわからないし,そもそもリーダだれだよ 偉い人再来襲 「あーよく集まってくれた.お前らは突発テストプロジェクトのメンバだ」 「まぁテストなんて簡単な仕事だから,適当に相談してやってくれよ」 「そうだ,しばらくしたら今回のお客さんがきて,仕様をくれるそうだ」 「じゃ(^^)ノシ」 どうやら,テストの仕事を請け負ったらしく,とりあえず手の空いてそうな人員 が集められたらしい 2008年6月 © Akira Ikeda 11
お客さんがきました いかにも頼りなさそうなお客さんが現れ,仕様書を手渡してこう 言いました 「この仕様書に書かれたソフトを別のA社が作ってるので,システムテ ストを皆さんには行っていただきます」 お客さんの要求は次のようなことでした
「なにぶん急な話で申し訳ないんですが,検討は今日中にお願いできま すか?」 「テストに使えるのは明日三日程度なんです.」 「予定では明後日からテストの実行を行っていただきたいです」 「期間は短いことはわかっているので,全てをテストしろと無理なこと は言いませんが,できうる限り効果のあるテストをお願いします」 お客さん,帰り際にこんなことを 「そうだ,明日,検討結果をプレゼンしてもらえますか?」 「私も急にこの仕事をふられてよくわかってないんですよ」 2008年6月 © Akira Ikeda 12
シチュエーションのポイント 皆さんは,わけもわからず集められた お互いに初対面で,どういう人かもよくわからない しかし,このメンバで作業は行わなければならない お客さんの要望など
今日中にテストケースを作ってほしい 全てをテストする必要はないが,できる範囲で最大の効果を出して ほしい 明日,検討結果をプレゼンしてほしい お客さん自身,この仕事はよくわかっていなさそう??? このような状況下で,皆さんは作業しなければなりません 問題山積みですが,全員の知恵と経験を結集して乗り越えましょう 2008年6月 © Akira Ikeda 13
STEP 1 テストチームビルディング 2008年6月 © Akira Ikeda 14
チームビルディングとは? 人が集まっただけでは,それは集合でしかない 共通の目的を持ち自立的に,協調的にメンバが働く物 をチームという(人が集まっただけではチームとは呼 ばない!) プロジェクトを作るとき,設計チームについては,各 人のスキルなどを勘案して,組織作りをする
テストチームについても同様のことが必要である テストチームも,集合からチームに変換! テストチームはビルディングされなければならない! 2008年6月 © Akira Ikeda 15
テストチームをビルドしよう メンバの顔合わせ ポジペセッションでやりました メンバの能力を把握する スキルシートを作成し,各メンバのスキルを見える化する
チームの能力を定義する メンバの能力から,チームとしてどういったテスト分野,テスト技法な どが得意/不得意なのかを明らかにする 体制図を作る テストチーム内のロールを決める このとき,お客様窓口を作って下さい.このロールは20代の方が担当. 成果物 スキルシート(個人) チームスキル定義 体制図 2008年6月 © Akira Ikeda 16
STEP 2 仕様分析 2008年6月 © Akira Ikeda 17
仕様分析とは? テストを行う場合,そのテストベースとなるものは,主に設計部 門が作成した仕様書となる 理想的には,要件定義からテストエンジニアが参加するべきだが,現実 そうはなっていない テストベースは,多くの場合,間違いを含む!
設計部門から仕様書を受け取ったら,まずはその内容を疑おう 仕様書を間違いがあることを前提に分析を行う それはすなわち仕様書の静的テストである 仕様書の静的テストを行うことで・・・ 仕様書が持つ誤りを発見することができる 仕様の曖昧さを排除することで,仕様の品質を向上することができる 仕様書の品質を向上することで,テストケースの品質の確保につながる →元がダメだと,後はすべてダメ →不良の摘出は上流で! 2008年6月 © Akira Ikeda 18
仕様書を分析しよう 配布する仕様書を分析 配布された仕様書を分析してください 仕様書についてはお客さん(講師)に質問OK. ただし,Q&Aシートを作成し,一人で質問に来る.持ち時間 は5分・1回のみ
→STEP1で作成した「お客様窓口」のロールの人 講師はお客さん役を演じ,必ずしも正しいことを言うかどう かはわからない 適切な質問を作ってこないと,いい回答は引き出せない 成果物 QAシート 分析結果 その他,何かあれば 2008年6月 © Akira Ikeda 19
STEP 3 テスト計画(戦略) 2008年6月 © Akira Ikeda 20
テスト計画(戦略)とは? テストはやみくもに行っても効果は薄い 高度なテストエンジニアが探索的テストを行う場合,やみくもに 行っているわけではない 限られた時間,コスト,リソースの範囲で最大限の効果を 目指す
そのためには,適切な計画と戦略(アプローチ)が必要 この演習では,この計画と戦略は,STEP1のテストチームの能力と STEP2の仕様書の分析結果から検討する 完全テストは時間とコストがいくらあっても足りない 割り切りも必要である この時点では大枠(全体指針)を決める 詳細な検討は,テスト設計のフェーズで 2008年6月 © Akira Ikeda 21
テスト計画をたててみよう STEP1とSTEP2の成果物を使って,テスト計画(戦略)を たてる テストチームの能力と仕様分析の結果から,まずは大局的な計画を 立てる このとき細部だけに着目しすぎないこと,全体を俯瞰する
計画書については,IEEE829が参考になる このレベルではマスターテストプランがもっともヒントに? この時点で全体のテストアーキテクチャを考えても良い マインドマップやNGTなどを使って,全体を図化するのも効果的だ ろう 成果物 テスト計画(戦略)書 2008年6月 © Akira Ikeda 22
STEP 4 テスト設計 2008年6月 © Akira Ikeda 23
テスト設計とは? テストケースを作成するにあたって必要となる”観点”を抽出し,検討し,整理 する この観点の検討にはSTEP3で検討した,テスト戦略(アプローチ)が影響を与える 大方針に従うということ(エンプラ系の見地からテストする,とか) テストの観点が抜けると,その観点のテストケースがごっそり抜ける
この作業がテストケース全体としての品質を決める この検討には特に発想力が必要とされる マインドマップや,マンダラート 観点の整理にはツリー図やクラス図,表のような物が適切 NGTやFV表,構造図など使っても良いだろう テスト設計は,その行為自体は,厳密にはどの段階でも実施することができる 大まかなテスト設計を行って,その結果からテスト戦略をたて,テスト計画に反映すると いうとでも良い (ここで行うのは,テストケースを作成する直前の段階のテスト設計であることに注意す る) 2008年6月 © Akira Ikeda 24
テスト設計してみよう! テスト設計しよう テスト設計で決めた大方針に従って,分析した仕様をテスト ベースとしてテスト設計を行う マインドマップやNGTを使うと効果的 各自がマインドマップ等で検討し,それを持ち寄って一つに
まとめるといいだろう 持ち寄って検討するときに疑似レビューが行われる 観点には重要度や優先度が存在する テストの優先付けのための情報となる このとき(設計時)リスクベースドテストの考え方を用いても良い だろう 成果物 テスト設計結果 中間成果物(個人ベース,チームベース) 2008年6月 © Akira Ikeda 25
STEP 5 テスト実装 2008年6月 © Akira Ikeda 26
テスト実装とは? テスト設計の結果に基づいて,具体的なテストケースを作 成する 観点をよく考え,決して仕様書の文言変換にならないようにする EXCELコピペの罠にはまらない テスト技法を活用する
同値分割法や境界値分析などのベーシックな技法から直交表などへ 初級者はいきなり高度な技法は使うべきではない まずはベーシックな技法を確実に,これが一番効く テストケースのフォーマットをよく考えること 一覧表形式や,手順形式など,様々なフォーマットがあり,テスト する観点に着目してどのような形式が良いのかよく検討すること 単純に大項目,中項目,小項目と別けるのはもっとも良くない 2008年6月 © Akira Ikeda 27
テスト実装 テスト設計結果から,もっとも重要と分析した観点 についてテストケースを作成する(今回は時間がな いので) どのようなテスト技法を使うのか,ちゃんと押さえ ること どのようなフォーマットにするのか検討すること
成果物 テストケース 2008年6月 © Akira Ikeda 28
STEP 6 最終見直し 2008年6月 © Akira Ikeda 29
最終の見直しを行って下さい 今までの工程で作成した物をもう一度見直して下さ い この時点で何か気になる点があれば,手直しをしてくだ さい ただし,手直ししたときには成果物の繋がりを考えて修 正漏れが無いように!
時間が余ったという班は,発表に備え準備を行って もらっても良いです 発表内容は,各工程の成果物と,それをどのように(ど ういった意図で)作成したのか説明する 2008年6月 © Akira Ikeda 30
お疲れ様でした! 2008年6月 © Akira Ikeda 31