Upgrade to Pro — share decks privately, control downloads, hide ads and more …

VSTeP #語る夕べ

akiyama924
January 04, 2019

VSTeP #語る夕べ

akiyama924

January 04, 2019
Tweet

More Decks by akiyama924

Other Decks in Technology

Transcript

  1. 3 ① テスト観点:何をテストするのか Test Viewpoint ▪ 『適切なテスト技法を選ぶ』ためには『テストすべきこと』を分かることが必要 (「テスト技法の選択が難しい?」との声 → その前に必要なものが分かっていない)

    ② NGT:テスト観点をツリー上に整理する記法 Notation for Generic Testing ▪ テストの抜け漏れを防止するには『テストすべきこと』を整理する自由な記法が必要 (「テストを漏したくない」との声 →『大項目・中項目・小項目』の一覧表が元凶?) ③ VSTeP:テスト観点に基づくエンジニアリング・プロセス Viewpoint-based Software Test Engineering Process ▪ 大勢集めて、人海戦術でテスト対象を適当に使うだけではすぐ限界に達する (TRA:テスト要求分析、TAD:アーキテクチャー設計、TDD:詳細設計、TI:実装) ④ NGT/VSTeP:にしさんのテスト開発方法論の名前 NGT + VSTeP + 様々なモデリング技術ss ▪ 実際のテストは、様々な技術を統合しておこなう 【今日の結論】:背景でわかる、VSTePの4つのポイント
  2. 段階的詳細化 三角形 成立 正三角形 二等辺 三角形 不等辺 三角形 不成立 直線

    二辺の和 <他の一辺 テスト観点(テストの意図・狙い)とは 5 ① テスト観点をベースにしてテストへの要求を分析したい  自分たちの技術や経験を十分理解することで、現状を共有して成長するため  テストの意図を構造化することで、テストの知見を再利用可能とするベースを作る ② まぎらわしい用語3つをまとめて整理(マイヤーズの三角形判定問題を例に)  テスト観点:何をテストするのかのみを端的に記述したもの(例:下図)  テストケース:そのテスト観点でテストするのに必要な値 (テスト観点と、その網羅基準から作られる。これ以上分解できない) 例:辺の長さとして1~9の整数が3つ入力されると三角形種別が出力する (今回は、0とか負とか4つとかは入力されない前提とする) ・ テスト観点:正三角形、網羅基準:境界値 → テストケース:(1,1,1)と(9,9,9)  テストスクリプト:手順(テスト実行のための詳細情報) 例:3辺(1,1,1)を入力後、判定ボタンを押下する 三角形判定プログラムの テスト観点が洗い出される様子 (3辺の長さを整数で入力し、 結果を返すプログラム) 「□」は全てテスト観点 三角形 成立 不成立 三角形 段階的詳細化
  3. テスト観点の例と、NGTのフレームワーク 6 NGTのトップノード(トップビューと呼ぶ)をMECE(漏れなく、ダブり無く)にしたいという話はよ く聞く。しかし、テスト観点の切り口はいくつもある。HAYST法の6W2Hもそうだし、TQEDも良い 切り口。(TQED とはEuroSTAR Conference 2018で、Adam Roman氏が発表したもの。TQED の切り口は、時間(Time)、量(Quantity)、イベント(Event)、データ(Data))

    NGTはあくまでも記法であり、トップビューを何にするかは、特定していない。(既存のフレームワー クも役立つが、分析力が大切) ① テスト観点(【“xx”をテストする】の“xx” )の例  条件(パラメータ) 例) 入力値、入力値の選定背景、データとしてまとまった入力(ファイル)、状態  テスト対象の構成 例) 商品のグレード、仕向け、プラットホームのバージョン、外部接続  テスト対象の外部環境 例) 固定的な外部環境(設置場所)、変動的な外部環境(温度、湿度、電源)  過去の不具合情報 例) カウンターの桁あふれ ② テスト観点のフレームワークの例  CIBFWモデル Condition(条件) / Item(テスト対象) / Behavior(振る舞い) / things Faulty or hazardous(嫌なこと全般。例えば、欠陥(バグ)/不具合(現象)、ハザード/心配事や懸念点 等) / World(その他、Customer of Customer、競合)
  4. NGTとは:(テスト観点図=ツリー風の記法) GUI 機能 データ 動作環境 プラットフォーム ネットワーク OS ハードウェア OSの種類

    OSのバージョン IEのバージョン 電子メール 8 記号 名称 備考 テスト観点 テストケー スの「意 図」 テスト対象 観点と厳密 に区別しな くてもよい 詳細化・抽 象化 子ノードは 7個以下 (目安) 順序関係な ど 方向を持つ もの 関連線 関連する テスト観点 組合せテス トで考慮 ≪xxxxxxx≫ ≪frame≫ ≪then≫ ≪behavior≫ ステレオ タイプ 新しい関係 詳細な関係 他にもand, afterなど 自由に ステレオタイプ≪frame≫はテストケースに デザインパターンのような構造を 持つときに使うと便利 関連線の意味を忘れないように書く NGT(Notation for Generic Testing): テスト開発のための記法 (西康晴氏が考案したテスト観点の構造を記述する方法) 特徴は【関連線】←とってもアバウトで使いやすい!
  5. 補足) 関連線を用いてテスト観点図の構造をリファイン 9 関連線とは、「組み合わせて確認したいテスト観点」間に引く線 (ステレオタイプを記入してもよい) A B C D E

    F A B C D B E F テスト観点A, B, C, D, E, Fを すべて組み合わせたテストをす るのではなく、 ① A, B, C, Dの組合せテスト と、 ② B, E, Fの組合せテスト に分けるとよい ② ①
  6. テスト観点図はリファインして改良する(育てる) 10  テスト観点図に正解は無く、自分たちの知見(チームの知恵)が表されていることに納 得するまで改良する。また、重要なテスト観点はフロントローディングする。 ① (付箋など)手書きで作成したテスト観点図をPCに入力する  ツリー図を描くのに、使い慣れているアプリケーションを用いるのが良いが、 freemindなどのマインドマップツールを用いても良い

    ② 一つのテスト観点に複数の意図が含まれていないこと確認する  含まれていた場合は分割するか、本当にしたい重要な意図をテスト観点に残す ③ それぞれのテスト観点を丁寧に見直す  「意図が明らかになるように」テスト観点の名前を変える(ピント合わせ) ④ テスト観点図の構造を見直し整理する  同じような構造が見えたら、テスト観点を一段階抽象化して、共通化する ⑤ 「テスト観点の拡充」を行う  間や対称(Aと非A)、こちらにある観点はあちらに無くて良いか? ⑥ 汎用的(別の場面)に活用できるテスト観点図であるか確認する  読む人によって異なる意図となる観点の書き直し(言葉を選ぶ)
  7. VSTePとは 12 VSTePは、いきなりテストを始めない(昔はいきなりテストをしていた)ように、テスト技 術者が行うべき活動を並べたもの。(テストプロセス) ① TRA:テスト要求分析 ・ テスト観点を段階的詳細化して、テスト観点図を作る ・ テスト観点図のリファインを繰り返して、全体を理解し、納得し、共感すること

    ▪ 『何をテストすべきか』について、全員で納得し共感できるモデルを作成する。 ② TAD:アーキテクチャー設計(大規模テスト時のみ:仕事はたいてい大規模) ・ テスト観点をグルーピングして、テストコンテナを作ったのち、 テストコンテナの入れ子や順序をテストコンテナ図にする ・ 複数のテスト観点を組み合わせて、テストケースのスケルトンとなるテストフレームを組む ▪ “こうすれば上手くいく”というテストの全体像を示すモデルを構築する。 そのモデルは、テスト観点(やテストフレーム)との関係が明確であり、全体を俯瞰できる ものであることが望まれる。 ③ TDD:詳細設計 ・ テスト観点(場合によってはテストフレーム)と網羅基準からテストケースを機械的に作る ・ 具体的なテストデータ値を決定する ④ TI:実装 ・ テストスクリプト(自動テストスクリプトやテスト手順書)を作る TRA TAD TDD TI
  8. テストコンテナとテストフレーム 13 TRA TAD TDD TI ユニットテスト 構造テスト •制御フロー •データフロー

    再発防止テスト 統合テスト APIテスト エミュレータによるテスト 構成テスト 性能テスト システムテスト 機能テスト 負荷テスト 組合せテスト シナリオテスト エラー&リカバリーテスト 認証テスト テストコンテナの例 テストフレーム たとえば、CIBFWフレームワークを使って、 テストケースのスケルトン(骨組み)を作成する。 条件(C) 対象(I) 振る舞い(B) 契約数 バックアップ機能 処理が終わるか 従来より、テストレベル、テストタイプ、 テストサイクルといったテストケースを まとめたものがあります。これらはテス トの全体像を示すために有効です。 ここで、そのまとまりががレベルなのか、 タイプなのか議論になることがあります が、あまり意味が無いように思います。 大切なことは、“こうすれば上手くい く”というテストの全体像を示すモデル の構築です。 そのモデルは、テスト観点(やテストフ レーム)との関係が明確であり、全体を 俯瞰できるものであるべきでしょう。