TEF-DO -6ページ目

TEF-DO

TEF北海道テスト勉強会「TEF-DO」

おばんです。
中岫です。

TEF道メンバーが毎回一人ずつ自分の気になるネタを発表するTEF道勉強会'15。
第8回目は、植村さんによる「テストアナリスト」の勉強会。

テストアナリストとはなんだろう?から始まり、
JSTQBのシラバスの概要解説と内容に関するディスカッション、
そして、最後にサンプル問題(翻訳版)の紹介していただきました。

■テストアナリストとは
植村さんから次のように解説していただきました。

「テストアナリスト」は「テスト」+「アナリスト」に分解することが出来る。
「アナリスト」は「アナライズ」する人。
「アナライズ」は「分析する人」「解剖学者」などの意味があります。
つまり、「アナリスト」は、専門分野に精通し、様々な情報をもとに多角的な分析・アドバイスなどを行なう役割の人のこと。

「アナリスト」の付く職業はどのようなものがあるか?
というと
証券アナリスト、フードアナリスト、知的財産アナリスト、バレーボールアナリスト、などなど。

「テストアナリスト」とは、
各技法の長所と短所を理解し、プロジェクトの種類、スケジュール、情報へのアクセス、
テスト担当者のスキル、および影響するその他の要因を考慮して、
特定の状況にとって最善の技法または複数の技法を選択できる必要がある。


テストアナリストは、分析できるだけではなく、アドバイスできないといけないので、かなりのエキスパート感がありますね。
「最善の技法または複数の技法を選択できる」というのがミソでしょうか。


また、Advanced Level シラバスによるとテストアナリスト(以下、TA)には次のビジネス成果が期待されるそうです。
期待される成果は次の表のとおりです。
後から気になったのは、TAレベル。このレベルは成果の難度?

Advanced Level テストアナリストのビジネス成果
レベルビジネス成果
TA1使用中のソフトウェア開発ライフサイクルに基づいて、適切なテスト活動を実施する。
TA2リスク分析によって提供された情報に基づいて、テスト活動の的確な優先順位付けを行う。
TA3適切なテスト技法を選択し適用する。定義されたカバレッジ基準に基づいて、テストが適切なコンフィデンスレベル(確信度合い)を提供することを確保する。
TA4テスト活動に関連する文書化の適切な度合いを提供する。
TA5実行する機能テストの適切なテストタイプを決定する。
TA6対象プロジェクトの使用性テストに関する責任を負う。
TA7作業プロダクト内の代表的な誤りに関する知識を適用して、ステークホルダとの公式および非公式のレビューに効果的に参画する。
TA8欠陥の分類体系を設計し、実装する。
TA9効率的なテストプロセスを支援するツールを適用する。



■シラバスの概要説明
植村さんからは、テストアナリストシラバスで学習時間の多くを占める「テスト技法」、「テストプロセス」をピックアップして解説していただきました。
学習時間は降順ソートすると次のようになります。

テスト技法825
テストプロセス300
レビュー165
ソフトウェア品質特性のテスト120
欠陥マネジメント120
テストマネジメント90
テストツール45


学習時間を見た時の参加メンバーの反応は、
  • テストツールのウェイトが低いのは、テクニカルテストアナリストの役割?
  • テストツールといってもいろんな種類がある、どのツールが対象?
  • 自動化はテストアナリストではなく、テクニカルテストアナリストの役割?

など、質問がでてきました。
植村さんの回答は、

テストアナリストを勉強するにあたって、テストアナリストだけではなく、
ALのテストマネージャ、テストアナリスト、テクニカルテストアナリストの
3つの役割とビジネス成果を学習すると良いと思います。

とのこと。


■テスト技法
具体的なテスト設計技法の解説は、今回は省略。
そのかわり、植村さんが整理した、テスト設計技法とカテゴリと詳細の表と紹介していただきました。
そして、テストアナリストは、これらの技法に対して次の配慮ができなければいけないと説明されていました。
  • 技法の適用、制限/注意事項、およびテストの目標を、カバレッジと検出すべき欠陥の観点から考慮する必要がある。
  • 状況によっては、「最善」の技法が1つではないことがある。
  • 技法を組み合わせると多くの場合、最も完全なカバレッジを達成するが、それぞれの技法を正しく適用するための十分な時間とスキルが必要になる。

探索的テストが経験ベースのテスト技法なのか?というと引っかかりますが、
これらの技法の特徴を深く理解し、対象のドメインの特徴に合わせて技法の選択、組み合わせができると、かっこいいですね。

テスト設計技法説明
仕様ベースコンポーネントまたはシステムの内部構造を参照することなく、テストベースの分析に基づいてテストケースを導き出すためのテスト条件に適用する。
  • 同値分割法
  • 境界値分析
  • デシジョンテーブル
  • 原因結果グラフ法
  • 状態遷移テスト
  • 組み合わせテスト技法
  • ユースケーステスト
  • ユーザストーリーテスト
  • ドメイン分析
欠陥ベース探す欠陥のタイプをテスト設計の基本として使用する技法であり、欠陥のタイプについて既知の情報からテストを体系的に導き出す。
  • 欠陥分類法
経験ベーステスト担当者のスキルと直感、および類似のアプリケーションや技術での経験を活用する。
  • エラー推測
  • チェックリストベースドテスト
  • 探索的テスト


ベース技法の種類制限/注意事項
仕様ベース同値分割法最適な分割を決定するために、基になる処理を理解することが重要である。
境界値分析テスト対象の値を正確に決定できるようにするために、有効同値および無効同値の増分に注意する必要がある。
デシジョンテーブルすべての相互作用条件を見つけることは、特に要件が適切に定義されていない、または存在しない場合に、困難な作業となる。
原因結果グラフ法習得するのにより多くの時間と労力を必要とする。ツールによるサポートも必要とする。原因結果グラフは特別な表記方法を使用するため、グラフの作成者および参照者は、この表記方法を理解する必要がある。
状態遷移テスト状態を決定することは、状態遷移表または状態遷移図を定義する作業の最も困難な部分である。
組み合わせテスト技法これらの技法の主な制限は、少数のテストの結果がすべてのテストの結果を代表し、それらのテストが期待される使用方法を表すと仮定することである。
ユースケーステスト有効なユースケースは、現実的なユーザトランザクションを反映する必要があり、この情報は、ユーザまたはユーザの代表者から入手する。
ユーザストーリーテスト実現する機能性の一部を実際にテストするために、ドライバおよびスタブを生成する要件が存在することがある。
ドメイン分析徹底したドメイン分析を実施するには、さまざまなドメインとドメイン間の潜在的な相互作用を識別するために、ソフトウェアを十分に理解する必要がある。
欠陥ベース欠陥分類法複数の欠陥分類法が存在し、これらを利用することにより、使用性など特定の種類のテストに焦点を当てることができる。
経験ベースエラー推測カバレッジを評価することは困難であり、テストアナリストの能力と経験に応じて大きく異なる。
チェックリストベースドテスト同じチェックリストを使用しても、異なる結果となる可能性がある。これは、より広いカバレッジを可能にするが、再現性が犠牲になることがある。
探索的テストマネジメントおよびスケジュールが困難になることがある。カバレッジがまちまちでまとまりがなく、再現するのが困難である。



■テストプロセス
ALでは、テストプロセスを以下のように分けている。
FLと比較するとプロセスが詳細化されていることがわかります。

テストプロセス(FL)テストプロセス(AL)
①計画、モニタリング、コントロール①計画、モニタリング、コントロール
②分析と設計②分析
③設計
③実装と実行④実装
⑤実行
④終了基準の評価とレポート⑥終了基準の評価とレポート
⑤終了作業⑦終了作業


シラバスでは、
「通常テストアナリストの主要な作業は、テストプロジェクト期間中の分析、設計、実装、実行の活動を通して行われる。」
「使用するソフトウェア開発ライフサイクルに関係なく、テストアナリストは関与への期待度とタイミングを理解する必要がある。」
「テストアナリストは多くの場合、関与の適切なタイミングを示すモデルの定義に依存することなく、最も有効な役割を決定し、その役割のために作業する必要がある。」


植村さん曰く、この説明から
テストアナリストはプロジェクトによって主な役割が柔軟に変わる(変える)。
とのこと。
確かに状況やチームメンバーなどで役割が変わりそうですね。

また、シラバスの計画の解説にある
「テストベース、テスト条件、およびテストケースとの間に複雑な関連性が存在することがある。
 たとえば、多対多の関連性がこれらの成果物の間に存在することがある。
 テスト計画作業とコントロールを効果的な実装をするためにこれらを理解する必要がある。
 テストアナリストは通常、これらの関係を最も的確に判断し、依存性を最小限にすることができる。」

というが理解できなかったそうです。
確かにわかりづらい(汗

参加メンバーからは、
テストアナリストが、計画・コントロールするということは、
テストアナリストはチームのリーダー的な人の役割なのでしょうね。

という意見がありました。
この意見に対して、本線からやや脱線しますが、
リーダーってどんな役割の人?マネージャの下働き、補佐?
どうやら、リーダーの定義はその会社によって位置づけが大きく変わってそうですね。

また次のように話題が尽きませんでした。
  • テストアナリストは開発プロセスどうかかわるのだろうか?
    →次にあげるようにテストするうえで分析する情報があるかどうか(テスト観点の調達)ではないか?
    • 企画段階、予算会議には入らない
    • 類似プロジェクトの分析し、計画の修正
    • 仕様のレビュー会議への参加
  • テストアナリストはテストマネージャとどう関わるだろうか?
  • テストマネージャとプロジェクトマネージャは同義?上下?
  • テストをマネジメントしているのか?工程を管理しているのか?


■サンプル問題紹介
ディスカッションが活発なおかげでタイムオーバー。
ちらっと紹介で終了。
残念。


解説していただいて、今の自分には、テストマネージャよりもテストアナリストの方が、必要な知識だと感じました。
そして、今回の勉強会をきっかけにALの勉強を本格的にしようと思いました。
植村さん、ありがとうございました!!

~ 記 ~
* 日時:9/14(月)19:00~21:00
* 担当:植村
* お題:テストアナリストについて
* 場所:東京エレクトロン札幌支社 会議室
* 書記:中岫
こんにちは。おぐす(さ)です。
TEF道メンバーが毎回一人ずつ自分の気になるネタを発表する、TEF道勉強会の2015年7回目を開催しました!!

今回はネモトさんによる「ゲーミフィケーション」です。

「ゲーミフィケーション」とは何か?やその本質などを説明してくれた後、ワークショップもやりました。

まず、ゲーミフィケーションとは、「コンピュータゲームの中で特徴的に培われてきたノウハウを現実の社会活動に応用する」こと。その中でも特に「強化学習プロセスやフロー体験を成立させるための最適なフィードバック設計のノウハウを応用する」こと。
一言でいえば、「ゲームっぽくて役に立つものなんでも!」、2010年から使われ始めたそうです。日本でも続々とゲーミフィケーションを取り入れる会社が増えているようです。

なぜゲーミフィケーションはいいのか?というと、以下の要素を含むから。
(1)進歩している感覚が生まれる。
  →本人自身成長している感覚を持つことができ、それがインセンティブになる。
(2)ゲームは快楽を伴う経験(達成)を生み出す。
  →本能に訴えかけながら、やらざるを得ない状況に持っていく。

そしてネモトさん曰く、ゲーミフィケーションの本質は「ハマるかどうか」。本来の目的を忘れて行為にハマること、だそうです。
たとえば、商品を買ってポイントカードをもらうことがありますが、ポイントをためる方が楽しくなって、ポイントをためるために商品を買いに行くようになってしまうといった感じでしょうか。

これを業務に適用すると、ゲーム要素が楽しくなって、それを楽しみたいがために業務を頑張るようになるっていうことですね!

いくつかその例と、ゲーミフィケーションの要素について話してくれた後、いよいよ、ワークショップです。

★━━━━━━━━━━━━━━━━━━━━★
ワークショップ・その1「あるたい焼き屋さんの集客アップを考える」
------------------------------------
たい焼き屋さんの集客をアップするために取り入れるゲーム要素を考えます。
わたし、、、こういうの大好き (〃∇〃) ♡
たくさん考えましたー(^▽^)!!

みんなから出た案を一部紹介します。
・バッジやポイントのコンプリート作戦。
・レシートにQRコードをつけて、育成ゲームができるようにする。
・たい焼き袋のコレクション
・シークレットたい焼き
・金魚すくいとコラボして、すくった数だけタイ焼きゲット。(→私案)

今考えると、たいやきのUFOキャッチャーとか、たい焼き釣りもよかったかも・・・
------------------------------------

たい焼きで盛り上がった後、ゲームをデザインするための6つのステップを解説してくれました。
1.ビジネス目標を定義する
2.対象とする行動を詳しく説明する
3.プレーヤーを詳しく説明する
4.アクティビティのサイクルを考案する
5.楽しさを忘れない!
6.適切なツールを活用する

つまり、誰のためにどんな目的で行うのかをよく考えたうえで楽しさ(ハマるかどうかの要素)
を取り入れたものを作らないとうまくいかないということですね!

では、うまくいっているかどうか、「楽しさ」についてはどうやって測ればいいのでしょうか?
ネモトさん曰く、「言っちゃうと、出してみなければわからない!」
仕組みが楽しいかどうか見分けるには、厳格なデザインプロセスを通じて開発→試験→改良していくことであり、
出してみてフィードバックを得るというアジャイルの考え方と同じだそうです。
ものづくりと一緒で、やりながら改良していくことが大事なのですね!
続いて、次のワークショップです。

★━━━━━━━━━━━━━━━━━━━━★
ワークショップ・その2「雪に埋もれた消火栓を救出する!」
------------------------------------
北海道では身近な話ですが、消火栓は冬期、雪に埋もれてしまいます。火事が起こってから掘り出したのでは遅いのですが、毎回除雪にかける予算はありません。雪に埋もれた消火栓を誰かに快く掘り起こしてもらえる仕組みについてみんなで考えました。
・・・やっぱり、こういの考えるの大好き(〃∇〃) ♡

これが、みんなから出た案の一部です。
・消火栓にQRコードをつけて、擬人化し育成ゲームなどができるようにする
・地域対抗戦にする
・掘ったらポイントがもらえて、春に余った予算をトップにあげる
・子供が好きなアニメとのコラボ(子供をだしにする)
・ポイント制などにして、ポイントがたまると、自分の家の排雪をしてもらえる。(→私案)

実際、アメリカでは掘り起こした消火栓に名前を自分の名前をつけることができるようにして、これにより、実際に消火栓堀に熱中する市民が続出したそうです。
私は名前はいいので、排雪権がほしいです・・・(・д・`●)市長さん、いかがでしょう(?_?)
------------------------------------

なんとなくゲーミフィケーションについてわかってきたところで、最後に、その実践例と気を付けなければいけないポイントを説明してくれました。
みなさんもゲーミフィケーションを取り入れる際、以下には気を付けてくださいね!
・見える化のときに間違ったものを指標に選んでしまう
・金銭的な報酬がやる気を殺いでしまう。
・やりがい詐取
・望まれないゲーミフィケーション
・プライバシーの取り扱い
・懸賞やギャンプル


最後に私の感想ですが、
ゲーミフィケーションを取り入れるのはとても良いアイデアだと思いますが、ネモトさんも話してくれた注意点をしっかり考慮しないまま行うと、逆にみんなのモチベーションが下がり、業務効率も下がる結果になりかねないと思いました。勢いでやるのはよくないですね。

また、今回のワークショップでも、案がたくさん出てくる人となかなか出てこない人に分かれたようなのでゲーミフィケーションの企画側についても合う合わないがありそうだなと思いました(^_^;)
すぐに業務に取り入れるのは難しいですが、ちょっとずつできたらいいなと思います!!!

この後、みんなで甘海老のつかみ取りに行きました (゚Д゚)ウマー
えびつかみどり

次回は植村さんです!
うえだです!

TEF道メンバーが毎回一人ずつ自分の気になるネタを発表する、
TEF道勉強会の2015年6回目を開催しました!!

今回はTEF道のグッズ担当で、ソフトウェアテスト界の「シルバースプーン」こと
中岫さんの番です。
お題は「Pair Testing」。


<狙い>
ペアテスティングの紹介
ペアテスティングを体験してみる



・・・ということで、実際に手を動かして実践してみるところも
みんなで取り組んでみました。



<PairTestingとは?>
ざっくりいうとペアプロのテスト版
定義は特にないが、2人で一つのモノをテストすることを指すことが多い


二人一組でプログラミングを実践する「ペアプログラミング」の
テスト版ですね。
ちなみに、「組合せテスト」のペアテストとは言葉は似ていますが
別モノです。
ただ、このペアテスティング、事例や情報があまりないですね。
そんな中、実際に中岫さんは実務で取り組んでいるようです。


<期待する効果>

※ペアプログラミングの効果と同じであると仮定して

1、規範意識の増大。個人の作業よりもサボりにくい。

2、よりよいコード(テスト)。相乗効果により設計(テスト設計)の質が向上することの期待

3、作業効率の向上。考え込むといったことが少なくなる。

4、割り込みに対して一方が応対している間に、もう一方が作業を進められる。

5、ペアを頻繁に入れ替えれば、複数の人間が1つの機能の開発(テスト)に関われる。

6、勤労意欲の向上。1人で作業するよりも楽しい場合がある

7、頻繁にペアを組みかえる場合、そのコード(テスト)全体について全員がそれなりの知識を共有できる。

8、教育的側面。知識の共有の促進。

9、チームワーク。結束力を生み出しやすい。


<相性の良い手法>
ペアテスティングは、以下と相性が良い
・アジャイル
・探索的テスト
・ユーザビリティテスト



たとえば、「探索的テスト×アジャイル×ペアテスティング」であれば、、、、たとえば

【前提】
開発者同士、または、開発者とテスターがペアを組む。

【やりかた】
・一人が操作しているところを見ながら、もう一人がさらにどんなテストできるかを考える。
  ⇒知見者の操作をみることで、無知見者がテストするための予備知識を得ることができる。
  ⇒良くバグを見つける人のノウハウ、暗黙知、特殊操作などのノウハウが得られる。
・こんな操作をしたらどうか?と提案する。
  ⇒提案する側は、チャーター、テストの観点表、仕様書を参照する場合もある。
・ログを取り、振り返る事によって知見を得る。
  ⇒ログから、この操作はどういう意図でやったの?などを確認。
  ⇒足りないモノや似たような操作が無いか考えて、再度ペアを入れ替えてテストする。


・・・一人では得られない「気づき」が得られるってことですね。
さらに、異なる能力や立場の人がペアを組むことで、互いに影響し合えると。


<探索的テストってナーニ?>
非公式に実施するテスト。公式なテストの準備をせず、実績のあるテスト設計技法を用いず、テスト結果かも予測せず、毎回、テスト方法が変わる。(JSTQBシラバスより)


昨今話題の探索的テストですね。
中岫さんによると。。。

非公式なテスト設計技法のひとつ。テストを実施する仮定で、テスト担当者がテスト実施情報を活用しながらテスト設計をコントロールし、積極的に質の高い新しいテストケースを設計する。


です。


ちなみに・・・・


<似ているテスト>
モンキーテスト
ランダムテスト
ゲリラテスト
アドリブテスト
意地悪テスト



一つ一つの意味は割愛しますが、よく混同されますよね。


ちなみに、中岫さんは「探索」の意味を深堀していました。
似たような言葉の比較をまとめていたのが面白かったので
掲載させていただきます。




これにより、「探索的テスト」の中岫さんによる個人見解は以下。

1、目的が必要
    →見つけたい欠陥を狙う、観点が必要
2、何かを明らかにしなければならない
   →欠陥を見つけなくても、なかったことを証明することも大事なこと
3.危険を冒す必要はない
   →無謀な馬鹿げたテストは必要ない
4、ある領域を調べる行為
    →まったく関係ない領域までテストする必要はない


「徘徊テスト」や「散策的テスト」には目的はないですし、
「探検テスト」や「冒険テスト」は危険(リスク/コスト)が大きすぎ!!!




というわけで、実際にやってみましょう!



<今回の定義>
・チームメンバー2人によるソフトウェアのテスト。
・一人は実際に操作し、もう一人は、議論しながらテストシナリオを作成する。
・2人のうち一人はテスターで、もう一人は、開発者またはビジネスアナリスト。
・正式なテストケースを用いず、探索的テストとして行う。
・ペアはチームメンバーが同等でなければいけない。

<メリット>
・開発者やビジネスアナリストは、別のビューからソフトウェアにアプローチ。
・ビジネス・アナリストとテスターの間で自動的に知識の共有。
・担当者と開発者で衝突することがあるが、ペアテスティングによって協力的になる。
・ペアで作業することによって緊張感を保つ。
・発見したバグはすぐに直される。
・ランダムに発生するようなバグの原因特定をしやすくなる。
・最も重要なこと。一緒に仕事することは楽しいです。




実際には以下で行いました。

1、参加者同士でペアを組む
2、ペア同士でどう進めるか考える(何をどうやってテストする?)
3、1セット30分交代で、交互にテスト

お題:中岫さん作の「FreeMindのデータをExcelで入出力する」ツール


・・・ここからは実践です。
ワイワイガヤガヤと、これぞ勉強会の醍醐味ですね~

今回は4チームで行いまして、それぞれのやり方で実施しました。

以下、チームごとの感想です。


--------
★ペア①
【やり方】
機能ごとにテスト担当を入れ替え

【感想】
・普段仕事している仲間なら良いと思うけど、上司とはちょっと・・・
・ただ、「偉い人」にも相応の観点があるので、いままでにない観点が得られるかも(やりづらいけど)
--------


--------
★ペア②
【やり方】
一人がやって、周りがガヤる

【感想】
・やりたいけど順番待ち、もどかしいことも
・方針や観点が次々浮かんでくるメンバーがいると心強い、周りから観点がもらえる
・テスト方針だけは最初に決める必要がある。ただ、方針変更は自在にできるのが良い。
・バグの切り分けなどの分析作業は一人でやった方が良いかも
--------


--------
★ペア③
【やり方】
仕様に沿ってやる
10分ごとに交代
操作に特化
目的をもって実施


【感想】
・アイデアだしが良かった、楽しかった
・相談できる人がいると心強い
・相談してやることで一体感がでる
・一人で考えるよりは複数人でやると観点が膨らむ
・それぞれの仕様を知っているかでアイデアの出方が変わる
・バグが多いとこのテストは成り立たないかも
・考えたり、分析するときは一人の方がよい
・3人で実施するのもありかなあ
--------


--------
★ペア④
【やり方】
どういうアプローチを考える
①仕様ベースと②利用者を決めてやる
ルールを決める(宣言とツッコミ)
ターゲットを絞る

【感想】
・思い込みで「流す」ことがなくなる
・バグが沢山でてきたときにデータを取りまとめるのにもう一人いると良いかも
・仕様の理解がたりないときとやバグが多いときにはもったいない。ある程度動くときに効果がある
・ペアなのでそのばで相談して解決するので、モヤモヤ感が減る
・やる人と記録係が分かれるので集中する
--------



・・・というわけで、ざっくりまとめると
「発想が膨らむことに効果大」
「効果が出ない状況もある」
「まずは楽しい」

だと思いました。

実際私はペア②に所属しましたが、考えていることを「口に出す」という事は
自身の考えを整理する意味でも、非常に有用だと思いました。
普段振り返ると、結構「ぼんやり」と手を動かしている時間ってあるものだなあと感じました。
あと、当然ながら自分にないモノを外部吸収できる作用は大きいです。
もっと違う立場の人と組むと、もっと違うのかもしれないですね!
(たとえば製品自体に精通した人とか、製品の運用/使い方のスペシャリストとか)


まあ、あとは費用対効果の面もあるので、そこは気になりますけど。。。。
誰かが言ってましたが・・・・

「今回のメンツでペアテストしたら、どんだけコストかかるんだろう?」


って(笑)


ただ、テストの一手段として採用したい方法だなと感じました。
特に、「教育」的側面だったり、発想をふくらますフェーズでは
有効だなあと感じました!

中岫さん、ありがとうとざいました!




次回は・・・・根本さんによる
「ゲーミフィケーション」です!!



by上田