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
VSTeP #語る夕べ
Search
akiyama924
January 04, 2019
Technology
2
1.3k
VSTeP #語る夕べ
akiyama924
January 04, 2019
Tweet
Share
More Decks by akiyama924
See All by akiyama924
第1回ASTER出張セミナー
kouichiakiyama
0
110
業務状態遷移テストを語る夕べ
kouichiakiyama
2
730
Other Decks in Technology
See All in Technology
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
120
Platform Engineering for Software Developers and Architects
syntasso
1
520
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
1
110
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
1.3k
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
120
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
390
AIチャットボット開発への生成AI活用
ryomrt
0
170
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
6
660
Lambdaと地方とコミュニティ
miu_crescent
2
370
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
390
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
Rails Girls Zürich Keynote
gr2m
94
13k
Scaling GitHub
holman
458
140k
The Pragmatic Product Professional
lauravandoore
31
6.3k
4 Signs Your Business is Dying
shpigford
180
21k
How GitHub (no longer) Works
holman
310
140k
Navigating Team Friction
lara
183
14k
Code Reviewing Like a Champion
maltzj
520
39k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Docker and Python
trallard
40
3.1k
Transcript
VSTePを語る ~ 非公式 ~ 2019年1月10日(木) SWI事業本部/秋山浩一 語る夕べ
2 この資料は、VSTePについて、わたしが勝手にまとめたものです。したがっ て、内容についての文責は秋山にあります。わざわざ嘘を書こうとしたところ は一切ありませんが、VSTePについて誤解している点はあると思います。 VSTePの正しい情報は、提唱者のにしさんのサイト http://qualab.jp/vstep/ にあるドキュメントを参照してください。 本ドキュメントは上記サイトを大幅に参照・引用・改編(切り貼り、並び替え など)して作成しました。 注意事項
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つのポイント
・テスト観点とは ・テスト観点の例と、NGTのフレーム ワーク ① テスト観点 4
段階的詳細化 三角形 成立 正三角形 二等辺 三角形 不等辺 三角形 不成立 直線
二辺の和 <他の一辺 テスト観点(テストの意図・狙い)とは 5 ① テスト観点をベースにしてテストへの要求を分析したい 自分たちの技術や経験を十分理解することで、現状を共有して成長するため テストの意図を構造化することで、テストの知見を再利用可能とするベースを作る ② まぎらわしい用語3つをまとめて整理(マイヤーズの三角形判定問題を例に) テスト観点:何をテストするのかのみを端的に記述したもの(例:下図) テストケース:そのテスト観点でテストするのに必要な値 (テスト観点と、その網羅基準から作られる。これ以上分解できない) 例:辺の長さとして1~9の整数が3つ入力されると三角形種別が出力する (今回は、0とか負とか4つとかは入力されない前提とする) ・ テスト観点:正三角形、網羅基準:境界値 → テストケース:(1,1,1)と(9,9,9) テストスクリプト:手順(テスト実行のための詳細情報) 例:3辺(1,1,1)を入力後、判定ボタンを押下する 三角形判定プログラムの テスト観点が洗い出される様子 (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、競合)
・NGTとは ・テスト観点図はリファインして改良する (育てる) ② NGT 7
NGTとは:(テスト観点図=ツリー風の記法) GUI 機能 データ 動作環境 プラットフォーム ネットワーク OS ハードウェア OSの種類
OSのバージョン IEのバージョン 電子メール 8 記号 名称 備考 テスト観点 テストケー スの「意 図」 テスト対象 観点と厳密 に区別しな くてもよい 詳細化・抽 象化 子ノードは 7個以下 (目安) 順序関係な ど 方向を持つ もの 関連線 関連する テスト観点 組合せテス トで考慮 ≪xxxxxxx≫ ≪frame≫ ≪then≫ ≪behavior≫ ステレオ タイプ 新しい関係 詳細な関係 他にもand, afterなど 自由に ステレオタイプ≪frame≫はテストケースに デザインパターンのような構造を 持つときに使うと便利 関連線の意味を忘れないように書く NGT(Notation for Generic Testing): テスト開発のための記法 (西康晴氏が考案したテスト観点の構造を記述する方法) 特徴は【関連線】←とってもアバウトで使いやすい!
補足) 関連線を用いてテスト観点図の構造をリファイン 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の組合せテスト に分けるとよい ② ①
テスト観点図はリファインして改良する(育てる) 10 テスト観点図に正解は無く、自分たちの知見(チームの知恵)が表されていることに納 得するまで改良する。また、重要なテスト観点はフロントローディングする。 ① (付箋など)手書きで作成したテスト観点図をPCに入力する ツリー図を描くのに、使い慣れているアプリケーションを用いるのが良いが、 freemindなどのマインドマップツールを用いても良い
② 一つのテスト観点に複数の意図が含まれていないこと確認する 含まれていた場合は分割するか、本当にしたい重要な意図をテスト観点に残す ③ それぞれのテスト観点を丁寧に見直す 「意図が明らかになるように」テスト観点の名前を変える(ピント合わせ) ④ テスト観点図の構造を見直し整理する 同じような構造が見えたら、テスト観点を一段階抽象化して、共通化する ⑤ 「テスト観点の拡充」を行う 間や対称(Aと非A)、こちらにある観点はあちらに無くて良いか? ⑥ 汎用的(別の場面)に活用できるテスト観点図であるか確認する 読む人によって異なる意図となる観点の書き直し(言葉を選ぶ)
・VSTePとは ・テストコンテナとテストフレーム ③ VSTeP 11
VSTePとは 12 VSTePは、いきなりテストを始めない(昔はいきなりテストをしていた)ように、テスト技 術者が行うべき活動を並べたもの。(テストプロセス) ① TRA:テスト要求分析 ・ テスト観点を段階的詳細化して、テスト観点図を作る ・ テスト観点図のリファインを繰り返して、全体を理解し、納得し、共感すること
▪ 『何をテストすべきか』について、全員で納得し共感できるモデルを作成する。 ② TAD:アーキテクチャー設計(大規模テスト時のみ:仕事はたいてい大規模) ・ テスト観点をグルーピングして、テストコンテナを作ったのち、 テストコンテナの入れ子や順序をテストコンテナ図にする ・ 複数のテスト観点を組み合わせて、テストケースのスケルトンとなるテストフレームを組む ▪ “こうすれば上手くいく”というテストの全体像を示すモデルを構築する。 そのモデルは、テスト観点(やテストフレーム)との関係が明確であり、全体を俯瞰できる ものであることが望まれる。 ③ TDD:詳細設計 ・ テスト観点(場合によってはテストフレーム)と網羅基準からテストケースを機械的に作る ・ 具体的なテストデータ値を決定する ④ TI:実装 ・ テストスクリプト(自動テストスクリプトやテスト手順書)を作る TRA TAD TDD TI
テストコンテナとテストフレーム 13 TRA TAD TDD TI ユニットテスト 構造テスト •制御フロー •データフロー
再発防止テスト 統合テスト APIテスト エミュレータによるテスト 構成テスト 性能テスト システムテスト 機能テスト 負荷テスト 組合せテスト シナリオテスト エラー&リカバリーテスト 認証テスト テストコンテナの例 テストフレーム たとえば、CIBFWフレームワークを使って、 テストケースのスケルトン(骨組み)を作成する。 条件(C) 対象(I) 振る舞い(B) 契約数 バックアップ機能 処理が終わるか 従来より、テストレベル、テストタイプ、 テストサイクルといったテストケースを まとめたものがあります。これらはテス トの全体像を示すために有効です。 ここで、そのまとまりががレベルなのか、 タイプなのか議論になることがあります が、あまり意味が無いように思います。 大切なことは、“こうすれば上手くい く”というテストの全体像を示すモデル の構築です。 そのモデルは、テスト観点(やテストフ レーム)との関係が明確であり、全体を 俯瞰できるものであるべきでしょう。