3.4K Views
November 22, 18
スライド概要
2018年11月22日に開催されたJaSST'18 Kyushu での招待講演の資料です。
https://www.jasst.jp/symposium/jasst18kyushu/report.html#S6
■アブストラクト
テストには日々取り組んでいるけれど、改めてどういった活動でどういった技術が必要なんだろう?
本セッションはテストに取り組み始めた方やテスト初級者向けに行います。テストといいつつ単なる仕様チェックになりがちな状態を卒業したい、テスト技術の全体像を掴みたい、テストの技術を高めるために勉強を始めたりスキルアップに取り組みたいと考えている方向けに、押さえておきたいキホンのキをお話しします。
テストを行なう意義を振り返り、テストに必要な思考をおさらいします
単なる仕様チェックから抜け出すための手段の1つとして、マインドマップを使ったテスト分析・設計の基本を紹介します
テスト技術の全体像をイメージするために、構成要素を5つの軸から捉えます
そのうえでそれらの勉強やスキルアップを始めるためのモデルケースやヒントをお伝えします
テスト技術力を高めていくためにはテストそのものについて自分なりのイメージや地図を持つことが重要です。是非この機会にイメージを掴み、具体的な行動を起こすヒントを得ましょう!
クオリティアーツ代表/NaITE代表/ASTER理事/AFFORDD運営委員/Bizreach Software Quality Enabler、等。世の中に品質の技術で貢献するために活動中。 https://quality-arts.com/ https://naite.swquality.jp/ https://www.aster.or.jp/ https://affordd.jp/
単なる仕様チェックから 卒業してテスト技術力を 高めていくために ~抑えておきたいキホンのキ~ 池田 暁 NPO法人ASTER 理事 NaITE(長崎IT技術者会)代表 2018/11/22(木)於 長崎県美術館
自己紹介
自己紹介 NPO法人ASTERやNaITE、SQiPやAFFORDD等に参画しています 情報通信系→医用系→自動車系と渡り歩いています 現在は社内のテストプロセス改善活動を取りまとめています テストに関する書籍を執筆したり、イベントや勉強会にて講師をしたり、 コンテンツを作って公開したりしています 長崎県長崎市の出身です 今日は地元で発表できてとても嬉しいです! 2018/11/22 © Akira Ikeda 3
NPO法人ASTERとは ソフトウェアテスト技術の普及振興に取り組んでいるNPO 全国各地でJaSST(ソフトウェアテストシンポジウム)やセ ミナーを開催しているほか、勉強会を支援します 全国各地でJSTQBによるテスト技術者認定資格試験を運営し ています その他、様々な調査活動や研究活動に取り組み、 様々なコンテンツを提供しています 是非ASTERの公式ページをご覧下さい! http://aster.or.jp/ 2018/11/22 © Akira Ikeda 4
NaITE(長崎IT技術者会)とは 長崎出身や在住,かつて在住など,長崎になんらかの関わ りや興味を持っている技術者の交流会としてスタートしま した 長崎とありますが,興味がある方はどなたでも気軽にご参 加いただけます 長崎現地にかかわらず,全国各地で勉強会やイベントを開 催しています ■NaITE公式サイト SIG活動にも取り組み,マインドマップから始めるソフト ウェアテスト 読書補助ガイド」や「はじめてのバグ票シ ステム ~導入実践ガイド」を無料にて公開しています! http://naite.swquality.jp/ ■Facebookページ https://www.facebook.com/NagasakiITEngineers/ 2015年4月に開始した 完全ボランティアの有志活動です! 2018/11/22 © Akira Ikeda 5
NaITE(長崎IT技術者会)とは # 開催日 内容 開催地 第19回 2017/01/21 数学を学ぼう 第20回 2017/04/08 プロセスモデル CMMI にまつわるちょっと深イイ話 第21回 2017/04/22 PSP概説&体験ワーク(おかわり) 第22回 2017/05/20 はじめてのバグ票システム~導入実践ガイド - 2017/07/01 Agile Japan 2017 第23回 2017/07/16 Scrum入門&Agile japan 2017 長崎サテライト参加報告 第24回 2017/09/17 テストカタマリー 第25回 2017/11/11 欠陥モデリングワークショップ&解説 神奈川 # 開催日 内容 開催地 第26回 2018/01/20 『ゆるファシ』体験ワークショップ 神奈川 - 2018/02/02 3rd 長崎 Software Quality and Development Gathering 第27回 2018/05/27 ケースメソッド体験ワークショップ 神奈川 第28回 2018/07/21 プロダクトオーナーシップ & Agile Japan 2018 参加報告 神奈川 - 2018/09/15 Agile Japan 2018 長崎サテライト with NaITE ~数学の知識を利用したソフトウェアテスト~ 神奈川 神奈川 定期的に,長崎内外で 勉強会やってます! 東京 勉強会 神奈川 長崎サテライト with NaITE 長崎 東京 ワークショップ&解説 神奈川 長崎 長崎 是非ご参加ください! & 一緒に企画しましょう! http://naite.swquality.jp/ 2018/11/22 © Akira Ikeda 6
はじめに
よりよいテストのために必要な技術・知識 ドメインの 専門技術・ 知識 テスト技術の 専門技術・知識 開発の 専門技術・ 知識 このあたりの話は、井芹さんや 実行委員の皆さんのセッションで得られます! 支える・繋がる テストの基礎 本講演ではこのあたりの話をします 2018/11/22 © Akira Ikeda 8
本日のゴール (本日はテストの“キホンのキ”がテーマです) • テストには日々取り組んでいるけれど、改めてどういった活動でどういった 技術が必要なんだろう? • 本セッションはテストに取り組み始めた方やテスト初級者向けに行います。 テストといいつつ単なる仕様チェックになりがちな状態を卒業したい、テス ト技術の全体像を掴みたい、テストの技術を高めるために勉強を始めたりス キルアップに取り組みたいと考えている方向けに、抑えておきたいキホンの キをお話しします。 – テストを行なう意義を振り返り、テストに必要な思考をおさらいします – 単なる仕様チェックから抜け出すための手段の1つとして、マインドマップを使っ たテスト分析・設計の基本を紹介します – テスト技術の全体像をイメージするために、構成要素を5つの軸から捉えます – そのうえでそれらの勉強やスキルアップを始めるためのモデルケースやヒントをお 伝えします。 • テスト技術力を高めていくためにはテストそのものについて自分なりのイ メージや地図を持つことが重要です。是非この機会にイメージを掴み、具体 的な行動を起こすヒントを得ましょう! 2018/11/22 © Akira Ikeda 9
ここで問題です ー長崎の童歌 でんでらりゅうば でてくるばってん でんでられんけん でーてこんけん こんこられんけん こられられんけん こーんこん 2018/11/22 © Akira Ikeda 10
でんでらりゅうアプリに関する仕様 指定のURLにブラウザでアクセスするとテキストボックスがひとつ、判定ボタ ンがひとつ表示される でんでらりゅうの歌詞を入力し、判定ボタンを押すと、入力が間違っていない か判定される 判定結果が正しければ歌が流れる 判定結果が誤っていればNGと表示される • さぁどういうテストをしようか? • 解法を探し、手を打たなければ。。。 • さっき同値分割/境界値分析は習いましたが。。。 2018/11/22 © Akira Ikeda 11
地図がないと闇雲になる 地図がないと、むやみに解法を探すことになり不効率 2018/11/22 © Akira Ikeda 12
道具を知らなければ、手を打てない 道具の種類と効果を把握しておかないと、適切な手を打てない 2018/11/22 © Akira Ikeda 13
本日のお話で意識してほしいこととご注意 意識してほしいこと • 自分の知っていることと知らないこと • 自社/現場の状況と比較し、何が同じで何が異なるのか • 自社/現場の現状況をよりよくするためにどのキーワードが使えそうか • 自社/現場の先々をよりよくするためにどのキーワードにアンテナをたてておけば よいか ご注意 • 個別の技術詳細については関連文献に委ねます(後で深掘り・調査できるようにポ インタを示します) • 「ソフトウェア品質」そのものについての議論は取り扱いません • 本資料に登場する会社名、製品名などは、一般に各社の登録商標または商標です 初級者は明日からの改善のために使えるキワードードやヒントを得て下さい 中級者以上の方は、自分の知識の棚卸しや整理としてお聞き下さい 2018/11/22 © Akira Ikeda 14
本日のアジェンダ 五つのキ 1. 【機】とらえ直そうテストの意義 2. 【規】テストに必要となる思考 1~3に 重点を 置いて 話します 3. 【紀】テストの分析設計~マインドマップを利用して~ 4. 【伎】テストの全体像をイメージするための5つの軸 5. 【企】始めてみよう テストのスキルアップ 6. おわりに 2018/11/22 © Akira Ikeda 15
機:物事がおこるきっかけ 1.【機】とらえ直そうテストの 意義
ソフトウェアテストってなんだろう? ソフトウェアテストっ てなんだろう? テストの経験は豊富な はず でも,説明するのは案 外難しい • ソフトウェアをテストする ことだと言うのは簡単だが • ソフトウェアを動かして みて,変な動きを確認す ること? • 処理速度が速いかどうか 試すこと? etc… • 今までの人生,散々テスト を受けてきたはず • 学校の定期テスト,大学 受験,車やバイクの免許, 入社試験 • つまり,皆さんはテストの プロ • 改めて考えてみると漠然と していませんか? • だから,テストを行うこと の意義も理解しにくいし, 定義も理解できない • 意義とイメージがつかめれ ば,テストの重要性も理解 できる 2018/11/22 © Akira Ikeda 17
ソフトウェアテストを行う意義 ソフトウェアテストを行なう意義 「ソフトウェアテストを行うと,ソフトウェアが作られていく過程で入 り込んでしまう“バグ”を発見することができ,そのバグを開発者が修 正することによって,ソフトウェアを利用者が安心して利用することが できるようになる.」(Akira Ikeda, Mikio Suzuki, 2007) • バグ(不良)を発見することができる – テストをやらないと,多くのバグは発見できない – テストで発見したバグを開発者がデバッグすることで,品質が上がる • ソフトウェアを利用者が安心して利用することができる – 変な動きをしないからこそ毎日継続的に使い続けられる – テストは,実際に使う立場になって行うことが重要 – 自らお金を払って買ってもいいと思える製品を作るという意識 – テストは,お客様に安心感という価値を提供する 2018/11/22 © Akira Ikeda 18
バグが与える影響 とある場面 ~お客様の立場~ • ある日スマホを買ってきたら,次のような現象が出た – – – – – アンテナは3本立っているのに,メールが送信できない メールを表示したら文字化け アドレス帳に登録できない,何も操作しないのにデータが消える 目覚ましが設定どおりに鳴らない 操作中に無反応になったり,勝手に電源が切れる などなど・・・ • どう思うでしょうか? – – – – あきれる,イライラする,腹が立つ 場合によってはクレーム電話 最悪,同じメーカのものは二度と買わないかもしれない さらに,同じメーカの全然別の製品も買わないかもしれない 2018/11/22 ソフトウェアにバグが残っている(混入している)と, 不快な気分になり,安心感もなくなり,不信感を持つ © Akira Ikeda 19
バグが与える影響 とある場面 ~メーカの立場~ • ゲームソフトの出荷後,フリーズなど致命的な問題が発見された – 回収・交換する場合,どういう対応が必要になるのか – ① ゲームソフトの回収 – ② バグの調査と分析 – ③ バグの修正 – ④ 修正されたバグについてのテスト – ⑤ 新しいバージョンの製品の生産 – ⑥ 新しいバージョンのお客様への送付 • 以下の例で考えてみる – – – – 出荷本数:10万本,回収費用:1本700円 ②~④にかかる人数:15人(時給2000円) ②~④にかかる時間:1ヵ月(8h×30d=240h) 生産費用:1本500円,送付費用:1本700円 2018/11/22 © Akira Ikeda 20
バグが与える影響 とある場面 ~メーカの立場~ – ① ゲームソフトの回収 – 10万本 × 送料700円 = 7,000万円 – ② バグの調査と分析~ ④ 修正されたバグについてのテスト – 15人 × 時給2,000円 × 240時間 = 720万円 – ⑤ 新しいバージョンの製品の生産 – 10万本 × 一本あたり500円 = 5,000万円 – ⑥ 新しいバージョンのお客様への送付 – 10万本 × 送料700円 = 7,000万円 – ①~⑥までの合計 – 7,000万円 + 720万円 + 5,000万円 + 7,000万円 = 約2億円! – このほか,損害賠償や,新聞/TV広告,電話窓口の設置などのコスト – コスト以外にも,不買運動や風評被害,最近なら批判Blogなどブランドに影響 たった一つのバグが数億円の損害を与えるほか ブランドに大きな影響を与えることもある! 2018/11/22 © Akira Ikeda 21
(参考)「史上最悪のソフトウェアバグ」ワースト10 1962年7月22日――火星探査機『マリナー1号』: • マリナー1号は打ち上げ時に予定のコースを外れたが,これは飛行ソフトウェアのバグが原因だった。地上の管制センター は大西洋上でロケットを破壊した。事後調査により,鉛筆で紙に書かれた数式をコンピューターのコードに置き換えるとき にミスが起き,これが原因でコンピューターが飛行コースの計算を誤ったことが判明した。 1982年――旧ソ連のガス・パイプライン: • シベリアを横断するガス・パイプラインの管理に旧ソ連が購入したカナダ製のコンピューターシステムに,米中央情報局 (CIA)のスパイがバグを仕掛けたことがあるという。旧ソ連は当時,米国の機密技術を密かに購入しようと――または盗み出 そうと――しており,このシステムを入手したのもその一環だった。だが,計画を察知したCIAはこれを逆手にとり,旧ソ連 の検査は問題なく通過するが,いったん運転に入ると機能しなくなるように仕組んだとされる。この結果起きたパイプライ ン事故は,核爆発以外では地球の歴史でも最大規模の爆発だったという。 1985〜1987年――セラック25: • 複数の医療施設で放射線治療装置が誤作動し,過大な放射線を浴びた患者に死傷者が出た。セラック25は2種類の放射線―― 低エネルギーの電子ビーム(ベータ粒子)とX線――を照射できるよう,既存の設計に「改良」を加えた治療装置だった。セ ラック25では電子銃と患者の間に置かれた金属製のターゲットに高エネルギーの電子を打ち込み,X線を発生させていた。 セラック25のもう1つの「改良」点は,旧モデル『セラック20』の電気機械式の安全保護装置をソフトウェア制御に置き換 えたことだった。ソフトウェアの方が信頼性が高いとの考えに基づく判断だった。 • しかし,技術者たちも知らなかった事実があった――セラック20およびセラック25に使われたOSは,正式な訓練も受けてい ないプログラマーが1人で作成したもので,バグが非常にわかりにくい構成になっていたのだ。「競合状態」と呼ばれる判 明しにくいバグが原因で,操作コマンドを素早く打ち込んだ場合,セラック25ではX線用の金属製ターゲットをきちんと配 置しないまま高エネルギーの放射線を照射する設定が可能になっていた。これにより少なくとも5人が死亡し,他にも重傷 者が出た。 WIRED「「史上最悪のソフトウェアバグ」ワースト10を紹介」より引用 2018/11/22 © Akira Ikeda 22
(参考)「史上最悪のソフトウェアバグ」ワースト10 1988年――バークレー版UNIX(BSD)のフィンガーデーモンによるバッファー・オーバーフロー •最初のインターネットワームとなった通称『モーリス・ワーム』は,バッファー・オーバーフローを悪用し,1日足らずで2000台から6000台のコン ピューターに感染した。原因となったのは,標準入出力ライブラリー・ルーチン内の「gets()」という関数のコードだ。「gets()」関数はネットワー ク越しにテキストを1行取得するように設計された。しかし,残念ながら「gets()」関数は入力を制限するようには作られていない。そのため,あま りにも大きな入力があった場合には,接続可能なあらゆるマシンをワームが占拠する元凶になった。 •プログラマーは「gets()」関数を使用コードから排除することで問題に対処しているが,C言語の標準入出力ライブラリーからこれを削除することは 拒否しており,この関数は現在も存在している。 1988〜1996年――『ケルベロス』の乱数生成アルゴリズム •ケルベロスは暗号を使ったセキュリティーシステムだが,乱数発生器に与えるシード(種)が適切でなく,真にランダムな乱数が生成されていなかった。 その結果,ケルベロスによる認証を用いているコンピューターについて,非常に簡単な方法で侵入可能な状態が8年間にわたって続いた。このバグが 実際に悪用されたかどうかは,今も定かではない。 1990年1月15日―― 米AT&T社のネットワーク停止 •米AT&T社の長距離電話用交換機『4ESS』を制御する最新版のソフトウェアにバグが入りこんだ。このため,4ESSは隣接するマシンの1つから,ある 特定のメッセージを受け取るとクラッシュするようになってしまった――そしてそのメッセージとは,クラッシュした交換機が復帰した際に,隣接す る交換機に送信するものだった。 •ある日,ニューヨークの交換機がクラッシュし再起動した。するとそれが原因で隣接する複数の交換機がクラッシュし,これらの交換機が再起動す ると隣接する複数の交換機がさらにクラッシュし,この現象が延々と続いた。しばらくすると,114台の交換機が6秒ごとにクラッシュと再起動を繰 り返すようになった。この影響でおよそ6万人の人々が9時間にわたって長距離通話サービスを利用できなくなった。修復のため,技術者たちは1つ前 のソフトウェアをロードした。 1993年――インテル社製『Pentium』(ペンティアム)による浮動小数点数の除算ミス •米インテル社が大々的に売り出したPentiumチップが,特定の浮動小数点数の除算で誤りを引き起こした。たとえば,4195835.0/3145727.0を計算 させると,正しい答えの1.33382ではなく1.33374となる。0.006%の違いだ。 •実際にこの問題の影響を受けるユーザーはごくわずかだったが,ユーザーへの対応から,同社にとって悪夢のような事態につながった。概算で300万 〜500万個の欠陥チップが流通していた状況で,インテル社は当初,高精度のチップが必要だと証明できる顧客のみをPentiumチップの交換対象とし た。しかし,最終的にインテル社は態度を改め,不満を訴えるすべてのユーザーのチップ交換に応じた。この欠陥は結局,インテル社に約4億7500万 ドルの損害を与えた。 2018/11/22 WIRED「「史上最悪のソフトウェアバグ」ワースト10を紹介」より引用 © Akira Ikeda 23
(参考)「史上最悪のソフトウェアバグ」ワースト10 1995年/1996年――『Ping of Death』 •[ピング・オブ・デス,不正なピングパケットによる攻撃]分割送信されたIPパケットの再構成を行なうコードのチェックとエラー処理が不十分だった ため,インターネット上の好きな場所から不正な形式のピングパケットを飛ばすことで,さまざまなオペレーティング・システム(OS)をクラッシュ させることができた。影響が最も顕著に現れたのはウィンドウズ搭載マシンで,この種のパケットを受け取ると,「死のブルー・スクリーン」と呼ば れる青い画面を表示して動作が停止してしまう。しかしこのバグを利用した攻撃は,ウィンドウズのみならず,マッキントッシュやUNIXを使ったシ ステムにも多くの被害をもたらした。 1996年6月4日――『アリアン5』フライト501 •欧州宇宙機関の開発したロケット,アリアン5には,『アリアン4』で使われていたコードが再利用されていた。しかし,アリアン5ではより強力なロ ケットエンジンを採用したことが引き金となり,ロケットに搭載された飛行コンピューター内の計算ルーチンにあったバグが問題を起こした。エラー は64ビットの浮動小数点数を16ビットの符号付き整数に変換するコードの中で起こった。アリアン5では加速度が大きいため,64ビット浮動小数点で 表現される数がアリアン4のときよりも大きくなってオーバーフローが起こり,最終的には飛行コンピューターがクラッシュしてしまった。 •フライト501では,最初にバックアップ・コンピューターがクラッシュし,それから0.05秒後にメイン・コンピューターがクラッシュした。その結果, エンジンの出力が過剰になり,ロケットは打ち上げ40秒後に空中分解してしまった。 2000年11月――パナマ国立ガン研究所 •米マルチデータ・システムズ・インターナショナル社(本社ミズーリ州)が製作した治療計画作成用ソフトウェアを使っていたパナマの国立ガン研究所 で,放射線治療で照射する放射線量の計算を誤る一連の事故が起きた。 •マルチデータ社のソフトウェアでは,健康な組織を放射線から守るための「ブロック」と呼ばれる金属製のシールドの配置を,コンピューターの画 面上に描いて決めるようになっていた。しかし,同社のソフトウェアではシールドが4個しか使えなかったにもかかわらず,パナマ人の技師たちはこ れを5個使いたいと考えた。 •技師たちは,真ん中に穴を持つ1個の大きなシールドとして,5個のシールドをまとめて表示させれば,ソフトウェアをだますことができることを発 見した。だが,そうした配置にした場合,穴の描き方によってこのソフトウェアが返す計算結果が違ってくることにはまったく気づいていなかった。 ある方向に向けて描くと正しい照射量が計算されるが,違う方向に描くと必要な照射量の最大2倍の量を推奨してきたのだ。 •少なくとも8人の患者が死亡し,さらに20人が過剰照射によって深刻な健康被害を受けたとみられている。技師たちは,コンピュータによる計算結果 を手作業で再チェックする法的義務を負っていたため,殺人罪で起訴されることになった。 WIRED「「史上最悪のソフトウェアバグ」ワースト10を紹介」より引用 2018/11/22 © Akira Ikeda 24
ソフトウェアテストを行う意義 • ソフトウェア製品に – バグが残っている(混入している)と,不快な気分になり,安心感もなくなり,不信感を持つ – 混入したたった一つのバグが数億円の損害を与えるほか,ブランドに大きな影響を与えること もある ソフトウェアテストを行なう意義 「ソフトウェアテストを行うと,ソフトウェアが作られていく過程で入 り込んでしまう“バグ”を発見することができ,そのバグを開発者が修 正することによって,ソフトウェアを利用者が安心して利用することが できるようになる.」(Akira Ikeda, Mikio Suzuki, 2007) はて? なんだか意義が足りないような・・・? 2018/11/22 © Akira Ikeda 25
ソフトウェアテストを行う意義 テストはお客様,企業双方にメリットがある! ソフトウェアテストを行なう意義 「 ソフトウェアテストを行うと,ソフトウェアが作られていく過程で入り込んでしまう “バグ”を発見することができ,そのバグを開発者が修正することによって,ソフト ウェアを利用者が安心して利用することができるようになる。 また,出荷後にバグが出ないことでソフトウェアの回収と修正に必要なコストを削減 し,企業のイメージ低下,ひいては倒産を防ぐことができる。」 ( Akira Ikeda, Mikio Suzuki, 2007 ) 」(Akira Ikeda, Mikio Suzuki, 2007) • たった一個のバグが,お客様に不利益を与えるどころか,企業の業績を左右することもある • 場合によっては企業の倒産により職を失ったり,企業や社会に損害を与えたことで,個人に損害賠 償責任が発生することも ソフトウェアテストにしっかりと取り組むということは, バグというモンスターから 実際のお客様のみならず,企業や社会, そして自分や家族を守ることでもある 2018/11/22 © Akira Ikeda 26
(参考)テストとは?(ISTQB-FL) • テストとは何か? – テストとは何か,に対する一般的な認識は,テストを実施すること,すなわち,ソフトウェアの実行 であることが多い。ソフトウェアの実行はテストの活動の一部であり,全部ではない。 – テストの活動は,テスト実施の前後にも存在する。例えば,計画,コントロール,テスト条件の選択, テストケースの設計と実行,実行結果のチェック,テスト完了基準の検証,テストプロセスやテスト 対象システムに関する報告,テストのまとめや終了作業(テストフェーズが完了した後)がある。テス トにはドキュメント(ソースコードを含む)レビューや,静的解析を実施することも含む。 – 動的テストと静的テストは,方法は違っても同じような目的のために使え,テスト対象のシステムだ けではなく,開発やテストのプロセス改善のための情報提供もできる。 • テストの目的 – 欠陥を摘出する。 – 対象ソフトウェアの品質レベルが十分であることを確認する。 – 意志決定のための情報を示す。 – 欠陥の作りこみを防ぐ。 ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2011.J02 から引用 2018/11/22 © Akira Ikeda 27
【演習】調べてみようソフトウェアテストの定義 〇〇〇氏の定義 IEEE・ISO・JIS等の規格での定義 職場やプロジェクトでの定義 2018/11/22 © Akira Ikeda 28
規:行動や判断のよりどころとなる基準。 2.【規】テストに必要となる 思考
ソフトウェア開発で必要となる基本的な思考 設計のための思考 テストのための思考 ※ご注意 様々な考え方があると思いますが、 本講演ではわかりやすさを重視して、このように単純化してお話しします 2018/11/22 © Akira Ikeda 30
設計とは問題領域を狭めていく行為 人間の世界 計算機の世界 問 題 領 域 の 特 定 ・ 具 体 化 要望や要求 計 算 (機 機世 能界 化へ )の 転 写 要件 仕様 問題領域を狭めていく 2018/11/22 © Akira Ikeda 31
設計時の思考 設計では要件を,計算機世界上で「こう動くべき」「こう動かないべ き」に分類・具体化・定義することで問題領域を狭めていく(計算機の 振る舞いを定義する→仕様化) め計 て算 い機 くと し て 扱 う 問 題 領 域 を 狭 2018/11/22 に「 「 定ここ 義うう し動動 てかく いなべ くいき こ べ」 とき で」 , 仕様外 こう動かないべき (異常系仕様) こう動くべき (正常系仕様) © Akira Ikeda 32
テスト時の思考 テストは仕様化された事柄について「その通りに動くか」を確認するだ けでは不十分で,「それ以外で何も起きないのか」も確認せねばならな い。 こう動かないべき (異常系仕様) こう動くべき (正常系仕様) 仕様を確認するだけでは 単なる動作チェック 2018/11/22 問「 題そ 領れ 域以 を外 広で げ何 ても 探起 索き しな てい いか く」 に「 加仕 え様 ,が そ の 通 り に 動 く か 」 それ以外(仕様外) こう動かないべき (異常系仕様) こう動くべき (正常系仕様) テストではむしろ 「仕様外」を扱うことが重要 © Akira Ikeda 33
テストすべきことの発想(認知) • チェックすべき対象は「仕様として書かれていること」,テストすべき対象 は「仕様外」と捉えるとわかりやすくなる • 仕様書に書かれていない「仕様外」をどれだけ発想・認知できるかが勝負 仕様外 こう動かないべき (異常系仕様) こう動くべき (正常系仕様) 仕様書に書かれていることから チェックすべきこと発想すれば良い(容易) 2018/11/22 仕様書に書かれていないため, 思いつかなければならない 仕様領域に近いところは 比較的仕様書から発想しやすい 仕様から遠いところは 仕様書によらない発想も必要 「 と行 い間 うを こ読 とむ 」 この仕様外に対応していくための1つの手段と して「テスト分析」と「テスト設計」があり, テストすべき事柄を発想して整理する手法と して「テスト分析設計手法」がある © Akira Ikeda 34
テストにおける思考のまとめ • テストを考えるとき,設計時とは違う思考パターンであることを理解 しておく(逆方向の思考である) – 設計は問題領域を狭めていく思考 – テストは問題領域を広げていく思考 – テストは仕様化された事柄について,「仕様化されたものがその通りに動くか」と 「それ以外で何も起きないのか」と問題領域を広げていく – 仕様を確認するのはチェック,仕様外を確認するのをテストと考えると良い • これらの一連の行為として「テスト分析」と「テスト設計」があり, テストすべき事柄を発想して整理する手段として「テスト分析設計手 法」がある テストに取り組む場合,思考を切り換える必要がある いわゆる「帽子のかぶり直し」である 2018/11/22 © Akira Ikeda 35
【演習】抑えてみようテストの思考 【仕様】 こう動くべき こう動かないべき それ以外 2018/11/22 © Akira Ikeda 36
紀:筋道や順序を追って整理・記録する 3.【紀】テストの分析設計 ~マインドマップを利用して~
皆さんどのようにテストケースを作っていますか? 仕様書等 テストケース 単なる転記 初級者 (仕様例) ボタンを押すと音が出る (テストケース例) ボタンを押すと音が出ることを確認 初級者の悩み ・テストケースのヌケが多い! 語尾を付け足して ・異常系のテストケースが抜ける! 完成させる,単なる ・機能を組み合せを考慮したテストケースがかけない! チェック止まり! ・テスト技法の使いどころがわからない! ・組織で積み上げられたノウハウが活用できない! ・自分の経験が再利用できない! などなど…… 2018/11/22 © Akira Ikeda 38
皆さんどのようにテストケースを作っていますか? 仕様書等 どんな音? 押し方は? テストケース タイミング は? 類似ソフト は? ユーザは? 昔どうしたん だっけ? いろいろ発想する 上級者 テストケースを書く前に,思考を発散させながら,かつMECEを意識し て考える.なので,初級者に比較してテストケースの抜けが少なくなる! また,弱点をつくようなテストケースが作成できる! 上級者はテスト観点を発想/検討したうえで戦略的にテストケースを作成する ・テストを行うにあたって,テスト観点をしっかりと考える 「機能」「プラットホーム」「エンドユーザ」「ドメイン特性」「組織のノウハウ」など ・テスト観点の階層や関連,組み合わせを考える ・不適切な仕様(仕様バグ)は摘出 → 設計部門に確認・修正依頼 ・テスト観点全体の構成を俯瞰して,重み付けや実行順番など考える 仕様書に書かれてい などなど…… ないことも発想する 2018/11/22 © Akira Ikeda 39
実に多くを考えることが必要であるが… 考えるっていっても 頭の中だけじゃ 大 変 だよな とりあえず, テストケース表を使って 考えようかな? どうせ最終的には エクセルの表になる わけだし ただ、テストケースの表現形式を使ってテスト設計を行うのは難しい 2018/11/22 © Akira Ikeda 40
では,どういった記法(ツール)を使うとよいのだろうか? 表で観点を出す, つまりブレストは 難しいな~ 試行錯誤できる 記法がいいな できれば構造化 しやすいものが いいかも 整理するためには 全体を俯瞰 できなくちゃ でも,発想力を刺激し てくれるものでないと, 観点が抜けちゃう! じゃぁ,そのような特徴をもつ 発想支援ツール,マインドマップを 使ってみたら? 2018/11/22 © Akira Ikeda 41
マインドマップの利用イメージ(コンセプト) 仕様書 テストケース 初級者 マインドマップを描く マインドマップを書くことで, ・単純な仕様の転記がなくなる ・仕様書に書かれていないことにも思考が誘導される ・「考える」行為を明確に実行できる 2018/11/22 © Akira Ikeda 42
つまり,「テストの思考」を実践するための道具としてマイ ンドマップを活用する テストケースの品質に大きな影響を与え, かつ,仕様外への発散思考が特に重要な ・テスト分析 ・テスト設計 にマインドマップを使ってみよう ・マインドマップの概要 ・マインドマップの適用を見据えた テスト分析&テスト設計の作業と勘所 ・マインドマップを使った作業手順 を説明します 単なる仕様チェックから卒業するための 手段の1つとして持ち帰って下さい 2018/11/22 © Akira Ikeda 43
2018/11/22 © Akira Ikeda 44
マインドマップとは? • トニー・ブザンにより考え出された図解技法 – 脳の仕組みを取り入れたもの – 思考に沿って描いていく – 図を取り入れる – 自分の深層意識にアクセスする Wikipediaによる解説 表現したい概念の中心となるキーワードやイメージを図の中央に置き,そこから放射状にキー ワードやイメージを繋げていくことで,発想を延ばしていく図解表現技法。 この方法によって複雑な概念もコンパクトに表現でき,非常に早く理解できるとされ,注目さ れ始めている。 人間の脳の意味ネットワークと呼ばれる意味記憶の構造によく適合しているので,理解や記憶 がしやすい。 また本来は紙とペンで描くものだが,コンピュータ上で描くための専用ソフトウェアもいくつか 存在する。 2018/11/22 © Akira Ikeda 45
マインドマップの特徴の一例 バードビュー MECE 学習が容易 半構造 発想力が刺激される 思考の流れの見える化 •全体を俯瞰し易い •項目それぞれが重複することなく,全体集合として漏れがない •基本的なルールは単純で,紙とペンがあれば始められる •フリーなルールであるために,柔軟に構造を変更可能 •描いているうちに他の項目との関連などから新たな発想が生まれやすい •深層意識へのアクセスし,情報を引き出す •中心から外に対して思考が放射的に広がる これらの特徴を上手く生かそう♪ 2018/11/22 © Akira Ikeda 46
済 2018/11/22 © Akira Ikeda 47
「テスト分析」と「テスト設計」 テストケースの作成 テストの実行 作業/概念で分ける テスト分析 仕様等の理解・整 理・検討・テスト 観点の目付け テスト設計 テスト観点の発 想・検討・整理, テスト技法の適 用 ここにマインドマッ プを使うぞ! 2018/11/22 テスト実装 詳細テストケー ス・スクリプト等 の作成(適切な フォーマットに表 現) テスト実行 テスト実装に より作成され たテストケー スを実行し, ログを取る テスト報告 テストの結果や ログを整理し、 当該テストレベ ルでのテスト活 動を評価する ※注意 本講演ではテスト観点の発想はテ スト設計で行ないますが、 他の手法ではテスト分析で行なう 場合もあります。 © Akira Ikeda 48
開発作業とテスト作業のおおまかな対比イメージ ソフトウェア開発 要求分析 顧客要求を分析し,ソフトウェアとし て実現可能か検討する 設計 分析結果に基づいて,設計モデルの作 成や仕様の決定を行う 実装 モデルや仕様に基づいて,プログラム 言語を使ってプログラムコードとして 実装する プログラム 2018/11/22 テスト開発 設 計 仕 様 書 が 主 な テ ス ト ベ ー ス と な る テスト分析 テストベースを分析し,どのようなテスト が実現可能か検討する テスト設計 テスト観点を発想しモデルの作成やテスト 設計仕様を決定し,テスト技法を適用する テスト実装 テストケースフォーマットを使って詳細テ ストケースやテストスクリプトとして実装 する テスト実行 © Akira Ikeda テストケース 49
テスト分析の作業と勘所(1) テスト分析 テスト設計 設計仕様やテストへの要求の理解・整理・検討 • 知らないものはテストできない! • 設計仕様に関する思想や意図,構造や構成物を理解する • どういったものを作ろうとしているかのイメージをつかむ • 設計者が特に重要と考える部分は,テストでも重要度が高いことがほとんど • 顧客先でどのように利用されるのか • テストへの要求や制約、品質目標等の認識 テスト設計の手がかりを作る • テストすべき“要求”や“要件”,“仕様”や“機能” • ソフトウェアのウィークポイントの目付け • 過去のテストの経験からひっかかるところ、気配を感じるところ • その他の疑問点 • 疑問が生じる箇所は仕様がこなれていない可能性がある 2018/11/22 © Akira Ikeda 50
テスト分析の作業と勘所(2) テスト分析 テスト設計 仕様の抜け漏れの発見と修正へのアクション • 仕様の欠陥を発見したら,設計部門にフィードバックし,仕様の高品質化をはかる • 仕様書の高品質化は即ちテストベースの高品質化であり,そこから生み出される テスト設計仕様やテストケースの高品質化に寄与する • 良い仕様書からは,良いコードと良いテストケースが生まれる • 欠陥以外でも、疑問を生じたことは積極的に問い合わせる テスト戦略へのフィードバック • 分析結果の情報をテストの戦略や計画に反映 仕様が理解できなかったり抜け漏れが多い場合,開発者に見直しを要請する テスト分析の作業はある意味においてテストの立場からのレビュー行為でもある どれだけ正しい仕様を深く理解できるかも良いテスト設計への鍵 2018/11/22 © Akira Ikeda 51
テスト設計の作業と勘所(1) テスト分析 テスト設計 テスト観点の発想 • 「なにをテストしよう」「どうテストしよう」が思いつかないと話が始まらない • 仕様書の分析結果や過去の経験,組織ノウハウから • テストカテゴリの利用 • Myersの14のシステムテスト・カテゴリ • ボリューム,ストレス,効率,ストレージ,信頼性,構成,互換性,設置,回復,操作性,セキュ リティ,サービス性,文書,手続き • ISO/IEC 25010の品質特性 • システム/ソフトウェア製品品質 • 機能適合性,性能効率性,互換性,使用性、信頼性、セキュリティ、保守性、移植性 • 利用時の品質 • 有効性、効率性、満足性、リスク回避性、利用状況網羅性 • 組織に蓄積されたガイドワード • テスト設計を進めるなかで得られる新たな発想 2018/11/22 © Akira Ikeda 52
テスト設計の作業と勘所(2) テスト分析 テスト設計 テスト観点の剪定・整理 • テスト観点には重要度や優先度が存在する • 全てのテストは多くの場合やりきれないため,テスト観点に優先度をつける • テストする必要のない観点や優先度・重要度の低い観点は切り落とす • 切り落としたテスト観点とその理由は記録に残しておくこと • 無秩序に発想したテスト観点を整える • 観点の階層や観点間の関連を検討する テスト技法の適用 • 観点モデルの観点要素に対して対応するテスト技法をアサインし,実行する テスト戦略へのフィードバック • テスト設計結果の情報をテストの戦略や計画に反映 ここでどれだけテスト観点を発想できるかがテスト設計の鍵 しかし,テスト観点をただ洗い出すだけでは不十分 テスト観点の剪定を行い階層や関連関係を整理する 2018/11/22 © Akira Ikeda 53
済 2018/11/22 済 © Akira Ikeda 54
マインドマップ適用時の基本的な作業手順と範囲 テスト設計に マインドマップを適用する テスト分析 テストベース (仕様書等) テスト設計 (観点モデルの作成) 直接転記 しない テスト設計 (テスト技法の適用) Mind Map テスト実装 分析と設計の成果物として マインドマップが作成される テストケース 2018/11/22 マインドマップではなく, 各種テスト技法を活用する © Akira Ikeda 55
分析と設計は一緒に考えたほうが良い • 意識的にテスト分析とテスト設計は分けにくい – 作業時の思考は,それほど綺麗に分けられない – テスト設計をしていたら,いつの間にか分析を行っていた – 分析していたのに,いつの間にかテスト設計視点で考えていた – 設計していたら分析が甘いことに気がついた – そのため工程を厳密に区切ると,工程終了レビューの回数が増え,工数が増えて いく(つまり手戻りの増加) – テスト分析とテスト設計とで作業上の責務は分けるが,両方同時に考えたほうが ボトルネックが小さくなる テスト分析 レ ビ ュ ー テスト設計 レ ビ ュ ー テスト実装 実際に作業を行うと,分析と設計は行ったりきたりする 2018/11/22 © Akira Ikeda 56
マインドマップ適用時の基本的な作業手順と範囲 テスト分析にも マインドマップを適用する テスト分析 テストベース (仕様書等) テスト設計 (観点モデルの作成) 直接転記 しない テスト設計 (テスト技法の適用) Mind Map テスト実装 テストケース 2018/11/22 © Akira Ikeda 57
(コツ)テスト分析には3色ボールペンも活用しよう! • テスト分析をマインドマップだけで行うのはかなり大変 – セントラルイメージやメインブランチがなかなか決まらない • まず仕様書を3色ボールペンでチェックし,マインドマップを描く手 がかりとする • テストの思考を意識したルールでも良い – 赤:客観的に「重要」な箇所 – 赤:「こう動くべき」な箇所 – 青:客観的に「まあまあ重要」な箇所 – 青:「こう動かないべき」な箇所 – 緑:主観的に「気になる」箇所 – 緑:「それ以外」な箇所 • チェックしている時点で,仕様の洩れや抜け, 間違いに気がつくことも多い – マインドマップを描く前に,テストベースの 品質向上できる – テスト分析するに値する品質となっているかの チェックとしてもいいだろう 2018/11/22 © Akira Ikeda 58
マインドマップ適用時の基本的な作業手順と範囲 テスト分析に 3色ボールペンも使う テスト分析 テストベース (仕様書等) テスト設計 (観点モデルの作成) 直接転記 しない テスト設計 (テスト技法の適用) Mind Map テスト実装 テストケース 2018/11/22 マインドマップではなく, 各種テスト技法を活用する © Akira Ikeda 59
マインドマップ適用時の基本的な作業手順と範囲 テスト分析と設計に マインドマップを適用する テスト分析 テストベース (仕様書等) 直接転記 しない テスト設計 (観点モデルの作成) テスト分析に 3色ボールペンを使う テスト設計 (テスト技法の適用) Mind Map テスト実装 分析と設計の成果物として マインドマップが作成される テストケース 2018/11/22 マインドマップではなく, 各種テスト技法を活用する © Akira Ikeda 60
テスト設計のマインドマップの例 メモや疑問 仕様書に書かれていない仕様外のことまで発想を広げている 2018/11/22 © Akira Ikeda 61
マインドマップによるテスト設計で, 単なる仕様チェック止まりから卒業!!! 疑問や不明点は確認 テストケース 仕様書 仕様書を読む 作成・ 修正 ⇔ マインドマップを描く 単なる転記は絶対ダメ! (テストケース) ・ ・ ・ ・ ・ (仕様例) ・ボタンを押すと音が出る 単なる仕様チェックから卒業するために実践しよう! 考えてみよう! ・テストケースは仕様を単純に転記しない! ・仕様に書かれていないことを考える! ・ベースとなる仕様を深く理解するために三色ボールペンを使う! ・仕様外を発想するためにマインドマップを使う! ・発想したものからテストしなければならないものをまとめる! ・最終的にテスト(チェック+テスト=仕様+仕様外)をテストケースとしてまとめる! 2018/11/22 © Akira Ikeda 62
【演習】描いてみようマインドマップ 【身近にある仕様書を元にしてマインドマップでテスト分析設計】 2018/11/22 © Akira Ikeda 63
伎:細かいわざ テストの全体像をイメージす るための5つの軸
テスト技術を5つの軸で捉える ソフトウェアテスト技術 プロセス マネジメント 設計技法 (テスト観点ベース) 設計技法 (所謂テスト技法) ツール 2018/11/22 © Akira Ikeda テスト技術の世 界をどう捉える かは人それぞれ だが,本講演で はわかりやすさ を重視して5つ の軸を設定した 65
テスト技術を5つの軸で捉える ソフトウェアテスト技術 プロセス マネジメント 設計技法 (テスト観点ベース) 設計技法 (所謂テスト技法) ツール 2018/11/22 © Akira Ikeda 66
開発プロセスにおけるテスト(V字モデルでの例) 要件定義 受け入れテスト 対応 要件定義書 等… システム設計 システムテスト 対応 システム仕様書 等… 構造設計 対応 統合テスト 詳細仕様書 等… 詳細設計 コンポーネントテスト 対応 構造仕様書 等… 実装/机上テスト 2018/11/22 © Akira Ikeda Vモデルにおける典型的なテストレベルはコンポー ネント~受け入れまでだが,本来は設計工程に対応 する形でテストレベルを設定する必要がある 67
テストレベルごとのライフサイクルプロセス 特に準備なく場当たり的にテストを実行(モンキーテスト) テスト実行 テストケースの作成と実行に概念と作業を分離。テスト技法が普及。 テストケース作成 テスト実行 テストは 実行だけではない! さらに概念と作業を分割。テストライフサイクルプロセスの考え方が普及。 いかに戦略的なテストを行うかという議論。 分析 設計 現在は概ねこのようなプロセス 実装 実行 報告 参考:ISTQB-FLシラバスでのテストの活動 テストの活動は,テスト実施の前後にも存在する。例えば,計画,コントロー ル,テスト条件の選択,テストケースの設計と実行,実行結果のチェック,テ スト完了基準の検証,テストプロセスやテスト対象システムに関する報告,テ ストのまとめや終了作業(テストフェーズが完了した後)がある。テストにはド キュメント(ソースコードを含む)レビューや,静的解析を実施することも含む。 ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2011.J02 から引用 2018/11/22 © Akira Ikeda 68
V字モデルへライフサイクルをマッピング 分析→設計→実装 対応 システム設計 実行→報告 システムテスト システム仕様書 分析→設計→実装 対応 構造設計 実行→報告 統合テスト 詳細仕様書 対応 詳細設計 分析→設計→実装 実行→報告 コンポーネントテスト 構造仕様書 朱文字の工程は,実装後を待たずに着手できるため,でき るだけ前倒し作業を行うとよい。 設計者とは別にテストエンジニアがいる場合,設計工程で 仕様書が作成したらすぐにテスト分析を開始する それによりテスト活動の前倒しできるうえテストの立場か らの仕様書レビューの効果も得られ,適切に対応すること でテストベースの品質向上に効果を得られる。 実装/机上テスト 2018/11/22 © Akira Ikeda 69
テスト技術を5つの軸で捉える ソフトウェアテスト技術 プロセス マネジメント 設計技法 (テスト観点ベース) 設計技法 (所謂テスト技法) ツール 2018/11/22 © Akira Ikeda 70
SQuBOKガイド V2に見るマネジメント 2.18 テストのマネジメント 2.18.1.1 テストドキュメントに関する規格(IEEE std 829,ISO/IEC/IEEE 29119-3) 2.18.1.2 テストの組織 2.18.1.3 テストレベル 2.18.1.4 V字モデル(Vモデル) 2.18.1.5 W字モデル(Wモデル) 2.18.1.6 テスト計画 2.18.1.7 テストリスクマネジメント 2.18.1.8 テスト進捗マネジメント 2.18.1.9 テスト環境マネジメント 2.18.1.10 2018/11/22 進捗管理だけが マネジメントではない! テストに関する規格(ISO/IEC/IEEE 29119 シリーズ) © Akira Ikeda 71
テスト計画とマネジメント,活動の対応イメージ マ ス タ ー テ ス ト 計 画 レベルテスト計画 レベルテスト計画 レベルテスト計画 テスト進捗マネジメント テストリスクマネジメント テスト環境マネジメント 分析→設計→実装 実行→報告 進捗管理ツールやインシデント管理ツール, 構成管理技術を利用して,最新の状況を確 実に捕捉,計画にフィードバックする 2018/11/22 © Akira Ikeda 72
テスト計画とマネジメント,活動の対応イメージ システムテスト計画 テスト進捗/テストリスク/テスト環境マネジメント 分析→設計→実装 実行→報告 システムテスト 統合テスト計画 テスト進捗/テストリスク/テスト環境マネジメント 実行→報告 分析→設計→実装 統合テスト コンポーネントテスト計画 テスト進捗/テストリスク/テスト環境マネジメント 分析→設計→実装 実行→報告 (”管理”の英訳はマネジ メントとコントロールの 二種類。どちらも大切) コンポーネントテスト 2018/11/22 実装/机上テスト テストの作業は 計画に基づいて コントロール されること! © Akira Ikeda 73
テスト技術を5つの軸で捉える ソフトウェアテスト技術 プロセス マネジメント 設計技法 (テスト観点ベース) 設計技法 (所謂テスト技法) ツール 2018/11/22 © Akira Ikeda 74
テストの設計技法(テスト観点ベース) 手法名 表現方法 特徴 プロセス NGT ツリー テスト全体をテスト観点で網羅 VSTeP FV表 表形式 目的機能の切り口でV&Vを網羅 HAYST法 ゆもつよメソッド 表形式 機能×テストタイプで網羅をチェック ゆも豆 Tiramis ツリー (MM) テストカテゴリ分析を実施。機能はMM - TAME ツリー (MM) テスト設計思考の可視化とレビューによるテ スト観点の洗い出しおよび整理 SEC BOOKS:高信頼化ソフトウェアのための開発手法ガイドブックから引用 https://www.ipa.go.jp/files/000005144.pdf マインドマップによる手法以外にもテスト観点ベースのテストの分析設計技法がある 複数の手法を試して自身の職場に適用できるものを活用しよう そのほかASTER主催テスト設計コンテストの資料も参考になる(http://aster.or.jp/business/contest.html) 2018/11/22 © Akira Ikeda 75
テスト技術を5つの軸で捉える ソフトウェアテスト技術 プロセス マネジメント 設計技法 (テスト観点ベース) 設計技法 (所謂テスト技法) ツール 2018/11/22 © Akira Ikeda 76
SQuBOKガイド V2に見るテストの設計技法 3.9 テストの技法 2018/11/22 3.9.1 経験及び直感に基づいた技法 3.9.2 仕様に基づいた技法 3.9.3 コードに基づいた技法 3.9.4 フォールトに基づいた技法 3.9.5 利用に基づいた技法 3.9.6 ソフトウェアの形態に基づいた技法 3.9.7 組み合わせの技法 3.9.8 リスクに基づいた技法 3.9.19 テスト技法の選択と組み合わせ 3.9.10 テスト自動化技法 テスト技法はホワイトボックスと ブラックボックスだけではない! © Akira Ikeda 77
SQuBOKガイド V2に見るテストの設計技法 経験に基づいた技法 •アドホックテスト,探索的テスト 仕様に基づいた技法 •ブラックボックステスト,同値分割,境界値分析/境界値テスト,デシジョンテーブルによるテスト,原因 結果グラフによるテスト,状態遷移テスト,ランダムテスト,モデルベース土テスト,要因分析技法【富 士通】,CFD技法 コードに基づいた技法 •ホワイトボックステスト,制御フローテスト,データフローテスト,データフローテスト,トランザク ションフローテスト フォールトに基づいた技法 •エラー推測テスト,ミューテーションテスト 利用に基づいた技法 •運用プロファイルによるテスト,ローカライゼーションテスト,ユーザ環境シミュレーションテスト,整 合性確認テスト 2018/11/22 © Akira Ikeda 78
SQuBOKガイド V2に見るテストの設計技法 ソフトウェアの形態に基づいた技法 •オブジェクト指向テスト,Webシステムのテスト,GUIテスト,サーバサイドのテスト,データ ベーステスト,並行プログラムのテスト,プロトコル適格性テスト,実時間のテスト,モバイルア プリケーションのテスト 組み合わせの技法 •直交配列表(実験計画法)を用いたテスト,All-pair法を用いたテスト リスクに基づいた技法 •テストマネジメントにおけるリスクベースドテスト,テスト設計におけるリスクベースドテスト テスト技法の選択と組み合わせ •機能的なテスト設計と非確定的なテスト設計の組み合わせ テスト自動化技法 •2018/11/22 © Akira Ikeda 79
テストの体系によってはレビュー技術は静的テスト レビュー方法 • ピアレビュー、インスペクション、チームレビュー、ペアプログラミン グ、ピアデスクチェック、パスアラウンド、ラウンドロビンレビュー、 ウォークスルー、アドホックレビュー 仕様・コードに基づいた技法 • 形式手法に基づくレビュー、インタフェース分析、複雑度分析、パスト レース、ラン・スルー、制御フロー分析、アルゴリズム分析、モジュー ル展開、七つの設計原理(富士通)、静的解析 フォールトに基づいた技法 • ソフトウェアFMEA、FMECA、FTA(フォールトの木解析)、EMEA(エ ラーモード故障解析)、CFIA(IBM)、PQデザインレビュー(日立) 2018/11/22 © Akira Ikeda 80
技法にはカ バーできる 範囲がある。 組み合わせ て、網羅性 を上げる JaSST’12 Tokyo での「みんなで作 ろうテスト技法ポジショニング マップ」 http://jasst.jp/symposium/jasst1 2tokyo/pdf/S10.pdf 2018/11/22 © Akira Ikeda 81
テスト技術を5つの軸で捉える ソフトウェアテスト技術 プロセス マネジメント 設計技法 (テスト観点ベース) 設計技法 (所謂テスト技法) ツール 2018/11/22 © Akira Ikeda 82
テストツールまるわかりガイドに見るテストツール テストツール体系 ① テスト分析 ② テスト設計 ③ テスト実装 ④ コード解析 ⑤ テスト(自動)実行 ⑥ テストウェア管理 2018/11/22 ⑦ テスト結果管理 ⑧ インシデント管理 テスト実行ツールだけが テストツールではない! “自動化”というキーワードは範囲が狭い ことに気を付けること。 テストツールによる高度化の1つの効果に自 動化がある。 © Akira Ikeda 83
テストツールまるわかりガイドに見るテストツール テスト分析 • 要件管理ツール テスト設計 • 状態遷移テストツール,組み合わせテスト支援ツール(直交表,オールペア),原因 結果グラフツール,動的解析ツール,カバレッジ計測ツール,その他のテスト設計支 援ツール テスト実装 • スタブツール,シミュレータ,コラボイメージツール,テストジェネレータ,テスト ケース管理ツール コード解析 • 静的解析ツール,構造解析ツール 2018/11/22 © Akira Ikeda 84
テストツールまるわかりガイドに見るテストツール テスト(自動)実行 • ユニットテストツール,キャプチャ/リプレイツール,性能テストツール,セ キュリティテストツール,テスト自動実行支援ツール テストウェア管理 • 構成管理ツール テスト結果管理 • テスト結果管理/テスト結果レポートツール インシデント管理 • インシデント管理ツール 2018/11/22 © Akira Ikeda 85
【演習】5つの軸のそれぞれ何から手をつけよう? プロセス マネジメント 設計技法 (テスト観点ベース) 設計技法 (所謂テスト技法) ツール 2018/11/22 © Akira Ikeda 86
企:先々のことをもくろむ。計画する。 5. 【企】始めてみよう テスト のスキルアップ
テスト初級者からよくいただく質問 • これからソフトウェアテストの勉強を始めたいのですが, おすすめの本は? 勉強会とかありますか? 良いセミナーなどありますか? • これまで皆さんは学校や新人研修では,テストに特化しかつじっくり時間が取られ た講義は受けていない場合が多いようです – すなわち皆さんはまだほとんどテストについて知りません – ですから,まずはじっくり基礎固めすることが必要です 2018/11/22 © Akira Ikeda 88
まずは書籍を読もう • まずはソフトウェアテストという作業や技術のイメージや全体像をつかむこ とが大切 • 何を始めるにも最低限の知識が必要 • まずは次の4冊を読むことをおすすめ (わからないところあっても読みきることが大切) 書籍名 著者 ■ソフトウェアテストという作業のイメージを掴むために マインドマップから始めるソフトウェアテスト 池田暁,鈴木三紀夫 ■テスト技術について広くトピックに触れるために 知識ゼロから学ぶソフトウェアテスト【改訂版】 高橋寿一 ソフトウェアテスト入門 押さえておきたい <<要点・重点>> ソフトウェア・テストPRESS編集部 ■テスト技法を学ぶために ソフトウェアテスト技法ドリル 2018/11/22 秋山浩一 © Akira Ikeda 89
次にWebの記事を読もう • Webにはたくさんの記事があるがテーマ個別の記事が多く,全体像や外 観をつかめるものは少ない • そういったわけで,書籍で全体像をつかんだあとに読み,知識を強化 したり,違った見方を得る • まずは次の3つの記事から始めるのをおすすめ タイトル URL 新人注目! http://gihyo.jp/dev/serial/01/test_newface テストを極める最初の一歩 ソフトウェアテスト 基本テクニック テストリーダーへの足がかり,最初の一歩 2018/11/22 http://gihyo.jp/dev/serial/01/tech_station http://gihyo.jp/dev/serial/01/vital_point © Akira Ikeda 90
現場で実践し復習しよう • 知識がたまったら,実際の業務で実践 – 実践することで理解が深まり,活用するためのコツや悩みを得ることができる • 実践で得たコツや悩みを意識しながら再度本と記事を読む – 自分の理解の誤りやそれまで気がつかなかった重要なことを知識とする – スラスラと読めるようになっていたら,確実にスキルアップ(レベルアップ) 書籍名 著者 マインドマップから始めるソフトウェアテスト 池田暁,鈴木三紀夫 知識ゼロから学ぶソフトウェアテスト [改訂版] 高橋寿一 ソフトウェアテスト入門 押さえておきたい <<要点・重点>> ソフトウェア・テストPRESS編集部 ソフトウェアテスト技法ドリル 秋山浩一 タイトル URL 新人注目! http://gihyo.jp/dev/serial/01/test_newface テストを極める最初の一歩 ソフトウェアテスト 基本テクニック http://gihyo.jp/dev/serial/01/tech_station テストリーダーへの足がかり,最初の一歩 http://gihyo.jp/dev/serial/01/vital_point 2018/11/22 © Akira Ikeda 91
コミュニティに参加しよう • 本を読み,実践することで知識は増え理解は深まってゆくが,同時に わからないことや悩みも増える • そこで,同じくソフトウェアテストを生業としているor興味がある人 達と会話することで,解決するヒントや新しいアイデアを得る • 参加費無料,MLベースの活動,ときどき勉強会 – 勉強会は終了後の懇親会まで参加すると良い コミュニティ名 URL TEF(ソフトウェアテスト技術者交流会) http://www.swtwst.jp SQiPコミュニティ https://www.juse.or.jp/sqip/community/sqip/ 2018/11/22 © Akira Ikeda 92
シンポジウム・ワークショップに参加しよう • シンポジウムでは他社の様々な取り組みが発表され,テストに関連す るたくさんのツールに触れる機会が得られる • 幅広いテーマの先端的な知見や実践事例が得られることで,それまで に得た知識の応用のヒントが得られ,また自分の仕事をさらに改善す ることができる • 様々な論文発表や企画セッション – 直接講師に質問することも可能なため,情報交換会は積極的に参加するとよい コミュニティ名 URL JaSST(ソフトウェアテストシンポジウム) http://www.jasst.jp/ WACATE(ソフトウェアテストワークショップ) http://wacate.jp/ SQiPシンポジウム(ソフトウェア品質シンポジウム) https://www.juse.jp/sqip/symposium/ 2018/11/22 © Akira Ikeda 93
これまでの知識を整理しよう • これまでに得られた知識をレポートとして整理する • 頭の中だけだと,どんどん記憶=知識は失われていく • 自分のために資料化することで,知識を整理することができ,また失 われない情報となる • さらに資料化する過程で,さらなる疑問や発想が得られる 知識の整理例 読んだ本や記事のまとめ(感想文) 実践して得られたノウハウや悩みリスト コミュニティで参考になったメールのやりとりを整理したもの 勉強会やシンポジウムの参加レポート 2018/11/22 © Akira Ikeda 94
現場に展開しよう • 知識やノウハウは自分のものだけにせず,同じ現場のメンバに広める • 現場を意識して資料を作る過程で,知識と理解がさらに深掘りされる • 資料は個人・組織としてノウハウが凝縮された貴重な資料となる – 組織改善に貢献するアウトプットを作成する行為とも言えます – 是非それは自分の成果であると上長にアピールしましょう – 社外活動への理解を得るきっかけともなる 現場への展開例 レポートをメールで配信 社内SNSでの記事作成 社内勉強会の実施 活動施策として現場提案 2018/11/22 © Akira Ikeda 95
勉強会やシンポジム・カンファレンスで発表しよう! • 社外勉強会で発表することで,さらに知識の高度化できる • 社外発表の経験と実績を得ることができる • 発表資料は技術者としての自分の名刺として使える • 聴講者からたくさんかつ多様なフィードバックを得られる • 何より,スキルアップしたことの充実感や達成感を得られる 発表で得られる物 社外勉強会での発表の経験や発表資料 発表までに整理したり調べたりした知識 聴講者からの沢山のフィードバックや 技術者のコミュニティ仲間 充実感や達成感,さらなるモチベーション 2018/11/22 © Akira Ikeda 96
(参考)成熟度モデル,認定資格,スキル標準 資格試験 個人を測る • ISTQB スキル標準 • Test.SSF 個人を測る → 集約して組織を測る テストプロセス成熟度モデル • TMMi • TPI / TPI NEXT • CTP • STEP 2018/11/22 組織を測る © Akira Ikeda 97
技術力アップのために利用できる無償の資料(一部) テストの基礎的技術を学びたい • ISTQB-FLシラバス&用語集(ISTQB) http://jstqb.jp/syllabus.html • ASTERセミナー標準テキスト(ASTER) http://aster.or.jp/business/seminar_text.html テスト設計について知りたい • テスト設計コンテスト関連資料(ASTER) http://aster.or.jp/business/contest.html テストツールについて知りたい • テストツールまるわかりガイド(ASTER) http://aster.or.jp/business/testtool_wg.html バグ管理について知りたい • はじめてのバグ票システム導入実践ガイド(NaITE) http://naite.swquality.jp/?page_id=40 テストスキル標準について知りたい • Test.SFF(IVEC・ASTER) http://aster.or.jp/business/testssf.html テストに関する最新動向や事例情報を知りたい • JaSST(ASTER) http://www.jasst.jp/ • SQiPシンポジウム(日科技連SQiP) https://www.juse.jp/sqip/symposium/ その他 • テストエンジニアステーション(技術評論社) https://gihyo.jp/ad/2008/test • 山浦恒夫の“くみこみ”な話(ITMedia) http://monoist.atmarkit.co.jp/mn/kw/yamaura_kumikomi.html 2018/11/22 © Akira Ikeda 98
技術力アップのために参加するべき国内イベント シンポジウム・カンファレンス・ワークショップイベント • JaSST http://www.jasst.jp/ • SQiPシンポジウム https://www.juse.jp/sqip/symposium/ • テスト自動化カンファレンス https://sites.google.com/site/testautomationresearch/ • WACATE http://wacate.jp/ ←チラシを配布していただきますので参考になさってください コミュニティ(全国) • TEF(テスト技術社交流会) http://www.swtest.jp/index.php?swtest.jp/wiki/forum • SQiPコミュニティ https://juse.or.jp/sqip/community/sqip/ コミュニティ(九州内中心) • NaITE(長崎IT技術者会) http://naite.swquality.jp/ • 九州ソフトウェアテスト勉強会 https://www.facebook.com/groups/Testing.Qshu/ • テスト酒場in福岡 https://test-sakaba.connpass.com/ • NetFocs https://netfocs.connpass.com/ • 長崎 WordPress ユーザーの集い https://www.facebook.com/groups/656863351010318/ • ぺちぱな https://atnd.org/groups/phper-na 2018/11/22 © Akira Ikeda 99
【演習】企画してみようスキルアップ 5年後に身につけておきた いスキル 2018/11/22 3年後達成しておきたいこ と © Akira Ikeda これから1年の間に取り組 むこと 100
5. おわりに
よりよいテストのために必要な技術・知識 ドメインの 専門技術・ 知識 テスト技術の 専門技術・知識 開発の 専門技術・ 知識 このあたりの話は、井芹さんや 実行委員の皆さんのセッションで得られます! 支える・繋がる テストの基礎 本講演ではこのあたりの話をしました 2018/11/22 © Akira Ikeda 102
本日はテストの“キホンのキ”がテーマでした • テストには日々取り組んでいるけれど、改めてどういった活動でどういった 技術が必要なんだろう? • 本セッションはテストに取り組み始めた方やテスト初級者向けに行います。 テストといいつつ単なる仕様チェックになりがちな状態を卒業したい、テス ト技術の全体像を掴みたい、テストの技術を高めるために勉強を始めたりス キルアップに取り組みたいと考えている方向けに、抑えておきたいキホンの キをお話しします。 – テストを行なう意義を振り返り、テストに必要な思考をおさらいします – 単なる仕様チェックから抜け出すための手段の1つとして、マインドマップを使っ たテスト分析・設計の基本を紹介します – テスト技術の全体像をイメージするために、構成要素を5つの軸から捉えます – そのうえでそれらの勉強やスキルアップを始めるためのモデルケースやヒントをお 伝えします。 • テスト技術力を高めていくためにはテストそのものについて自分なりのイ メージや地図を持つことが重要です。是非この機会にイメージを掴み、具体 的な行動を起こすヒントを得ましょう! 2018/11/22 © Akira Ikeda 103
みんなで作ろう“キホンのキ“ テストケース設計のキホンのキの例 •軌:仕様どおり(有則,禁則) •柵:仕様に存在する際(境界) •奇(危):仕様から外れたところ(無則) それぞれのキホンのキを 考えてみよう! 〇〇〇のキホンのキ •____ •____ •____ 2018/11/22 © Akira Ikeda 104
2018/11/22 © Akira Ikeda 105
2018年も技術イベントを開催し、長崎を盛り上げています! NaITE (長崎IT技術者会) 長崎に興味がある、住んでいた、友達がいる等、長 崎に何かしらの縁がある人で活動中のIT技術コミュニ ティです。地元長崎は勿論、全国各地で活動中、ITエ ンジニアが主役として活躍できる、長崎県人会的に柔 らかに活動中です! 長崎での技術イベントや全国各地での勉強会、 SIG活動等に積極的に取り組んでいます! ■技術イベント 年に一度ソフトウェア品質と 開発を扱うイベント長崎QDG を開催、その他Agile Japan 長 崎サテライト等を開催していま す。 ■勉強会 定期的に開催する勉強会を通 して技術情報を発信したり、議 論を促進することで、技術者の 技術向上に取り組んでいます。 ■SIG 特に興味のあることついて継 続的に議論したり、技術ノウハ ウをまとめたりする研究活動に 取り組んでいます。 ガイドを無償公開中! ⇒ # 第26回 内容 開催地 『ゆるファシ』体験ワークショップ 神奈川 - 3rd 長崎 Software Quality and Development Gathering 長崎 - NaITE-Night vol.1 長崎 第27回 ケースメソッド体験ワークショップ 神奈川 第28回 プロダクトオーナーシップ & Agile Japan 2018 参加報告 神奈川 - Agile Japan 2018 長崎サテライト with NaITE 長崎 - NaITE-Night vol.2 長崎 ◎バグ票システム検討SIG 「はじめてのバグ票システム ~導入実践ガイド 1.1版」 http://naite.swquality.jp/?page_id=40 ■その他の活動 ソフトウェア技術の話題を肴に議論を楽しむNaITE-Nightの開催や、他団体・他コミュニ ティ主催イベントへの出講出展を通して、幅広い技術交流を図っています。 2015年から毎年NaITEのフラ グシップイベントを開催! 今年は“レビュー”技術を軸に幅 広いセッションを設けました! 当日は長崎内外から多くの技術 が集まり、熱気あふれる議論や積 極的な交流をはかりました! 名称 : 3rd 長崎 Software Quality and Development Gathering 日時 : 2018/2/2(金) 12:00~17:20 場所 : メルカつきまち 主催 : NaITE(長崎IT技術者会) 協賛 : AFFORDD(派生開発推進協議会) プログラム: 共同実行委員長 池田 暁(NaITE) 日下部 茂(長崎県立大学) 実行委員 大月 美佳(佐賀大学) 小笠原 秀人(東芝) 小畑 慶次 (デンソー技研セン ター) 佐藤 陽春 すずき しょうご(NaITE) ツノダ シュン(NaITE) 手島 尚人(GMOペパボ) スペシャルセッション 『ソフトウェア品質レビューの全て:生い立ちから先進技術まで』: 細川 宣啓 氏(日本アイビーエム) セッション: 『単なる仕様チェックから卒業するために』池田 暁 氏(NaITE) 『高速2パーソンインスペクションのススメ』:原 佑貴子 氏(日本アイビーエム) 『いろいろ使えるセーフウェアのためのモデルSTAMPとその分析法』:日下部 茂 氏(長崎県立大学) 『PSP活用SIG活動報告』:くまきち 氏 『チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニア リング』:金子 昌永 氏(日立製作所) 他、参加者によるLT(ライトニングトークス) 2016年・2017年に引き続き、 今年も開催! Agile japan 2018 の基調講演 はもちろんアジャイル実践者に よるセッションなど充実した内 容をお届けしました! 名称 : Agile Japan 2018 長崎サテライト with NaITE 日時 : 2018/9/15(土) 12:00~16:40 場所 : 長崎市立図書館 主催 : NaITE(長崎IT技術者会) プログラム: 共同実行委員長 池田 暁(NaITE) 手島 尚人(GMOペパボ) 実行委員 大月 美佳(佐賀大学) 日下部 茂(長崎県立大学) ツノダ シュン(NaITE) 会場スタッフ すずき しょうご(NaITE) • Facebookページ「NaITE(長崎IT技術者会)」 Agile Japan 2018 基調講演: 『モブプログラミングと“フロー”の力』:Woody Zuil 氏 『Japan Taxi の挑戦』:川鍋 一朗 氏(JapanTaxi) セッション: 『コミュニケーションから始めるアジャイル』:手島 尚人氏(GMOペバポ) 『レジエンス工学の手法によるアジャイルプロセスのモデリング』:日下部茂 氏(長崎県立大学) 『知識集約型の製品開発においてプロダクトオーナーがやるべき3つのこと』: 関 満徳 氏(グロースエクスパートナーズ) 他、参加者によるLT(ライトニングトークス) • Twitter公式アカウント:@NagasakiITEng • お問い合わせ:http://naite.swquality.jp/?page_id=544 2019年に4th 長崎Software Quality and Development Gathering を開催! 発表者・協賛企業/団体・スポンサー・実行委員を募集中です! 公式サイト • NaITE(長崎IT技術者会)公式サイト http://naite.swquality.jp https://www.facebook.com/NagasakiITEngineers/