Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

【講演資料】テスト自動化から始める、Io t時代の組込アジャイル開発

ET/IoT 2016でおはなしした、組込ソフトウェア開発におけるシステムテスト自動化についての講演資料です。

  • Loggen Sie sich ein, um Kommentare anzuzeigen.

【講演資料】テスト自動化から始める、Io t時代の組込アジャイル開発

  1. 1. 【ET/IoT2016講演】 テスト自動化から始める 組込アジャイル開発 Ver 1.00 2016年11月17/18日 株式会社 豆蔵 IoT時代の
  2. 2. 自己紹介 ー 松永広明 株式会社 豆蔵 シニアコンサルタント(2015年~) 1990年のキャリアスタートから、一貫して組込ソフトウェアの開 発に従事。 2011年ごろよりアジャイル開発を推進。 書籍 • わかりやすいアジャイル開発の教科書(2012) レビュアー 資格:ScrumAlliance 認定Scrum Professional 認定Scrum Master 松永広明
  3. 3. “モノ”のインターネット 3 様々な”モノ”がつ ながる 様々なサービスと つながる 世界中から データが集まる 分析して 利用する
  4. 4. IoT時代のフィードバックループ 4 世界中から データが集まる 分析して 利用する 新しい用途 を思いつく 新しい機能 が必要になる 変化はすぐにやってくる。
  5. 5. 5 もはやアジャイル開発は必須
  6. 6. 6 アジャイル開発とテスト自動化
  7. 7. アジャイル開発のプロセス例  短い期間で潜在的出荷可能(Potentially Shippable)な製 品開発を反復しながら進める 7 仕様 イテレーション 設計 実装 テスト PSI: Potentially Shippable Increment 仕様 設計 実装 テスト 仕様 設計 実装 テスト 仕様 設計 実装 テスト
  8. 8. 建て増し旅館構造  PSIを積み重ねて開発を続けると、建て増し旅館のよう な構造になりがち 8 PSI PSI PSI PSI PSI PSI PSI PSI PSI PSI PSI PSIPSI PSI PSI PSI 定期的にリファクタリング(アーキテクチャレベル)が必要
  9. 9. 事例:リファクタリング禁止事件 9 あるコンシューマー向け製品において、市場にて重大な機能不全発覚 原因は、担当者が自分の判断で特定の処理にリファクタリングを施したことだった リファクタリング後のテストは間引いて実行されており、不具合の検出が出来なかった 後日マネジメントより、勝手なリファクタリングを行うことを禁止する通達が出た なにが問題か?
  10. 10. 正しいリファクタリング 10 コーディング 自動回帰テスト リファクター 外から見た動作を変えることなく、内部構造を整理する 回帰テストを定期的に 実行し品質を保証する
  11. 11. 手動テストじゃダメなの? 11 手動テストじゃ ダメなの?
  12. 12. アジャイル開発の場合 12 コーディング テスト リファクター コーディング テスト リファクター コーディング テスト リファクター コーディング テスト リファクター 仕様 イテレーション 設計 実装 テスト 仕様 設計 実装 テスト 仕様 設計 実装 テスト 仕様 設計 実装 テスト
  13. 13. アジャイル開発の場合 13 開発が進む間、回帰テストの量は増加し続けるため 手動で行うにはテストを間引くか、人海戦術しかない イテレーション1 イテレーション1 イテレーション2 イテレーション1 イテレーション2 イテレーション3 イテレーション1 イテレーション2 イテレーション4 イテレーション3 テストケース数 イテレーション数 仕様 イテレーション 設計 実装 テスト 仕様 設計 実装 テスト 仕様 設計 実装 テスト 仕様 設計 実装 テスト
  14. 14. 14 テスト自動化導入のコツ
  15. 15. どんなテストを自動化すべきか  テスト自動化に向いているもの  何度も繰り返し実行するテスト(回帰テストなど)  パラメータだけを変更して同じシナリオで何度も実行するテスト  限界系のテスト、連続(耐久)系のテスト  単純な作業を繰り返すテスト(状態遷移テストなど)  テスト自動化に向かないもの  一度しか実施しないテスト(自動化のコストに見合わない)  手順の複雑なテスト(単純なテストに分解すべき)  探索的テスト(人間の創造力が必要)  期待結果が想定できないもの(株価など) 15
  16. 16. テスト自動化導入に対する誤解 誤解 説明 自動化ツールを使えばコストが削減 できるはずだ! 自動化の導入にはコスト、特に初期コストが多くかかるため、コスト 削減を目的にすると早期に失敗と判断してしまいがちになります。コ スト削減は、自動化による品質向上の結果と捉え、中長期的に取 り組むべきでしょう。 自動化ツールを使うと、手動テスト は要らなくなるんだよね スクリプトを作った後は、少なくともそのスクリプトが意図した通りに動 作するかどうかのテストは必要です。また、自動テストの主な役割は 回帰テストなので、手動テストがなくなることはありません。 自動化ツールを使うと新しいバグをど んどん見つけてくれて楽ちん♪ 自動テストは、プログラムされた期待値以外のバグを発見することは 出来ません。回帰テストを頻繁に実行することで、品質を保証し続 けることが自動化の主な目的です。 自動テストがFailしたら、即刻バグと して報告します! 自動テストがFailした場合にわかるのは「何らかの調査が必要」という 事だけです。自動スクリプトの不具合かも知れないし、ツール実行マ シンのリソース不足の可能性などもあり得ます。 テストの自動化には、プログラミング のスキルが必要だ。 テスト設計者とスクリプト作成者の役割を分離することにより、テスト 設計者はほぼ自然言語でテストケースを記述できます。
  17. 17. 17 組込ソフトウェア開発における テストプロセス
  18. 18. 組み込み開発におけるテストの課題  ハードウェアボトルネック  プロジェクト後半までターゲットハードウェアが準備できない。  ターゲットハードウェアが高価で不足している。  ハードウェア自体にバグがあり、ソフトウェアバグとの切り分け が難しくなる。  ターゲットビルドやターゲットへのロードに時間がかかるせいで、 コーディングからテストまでのサイクルが長くなる。  ターゲットハードウェア向けのクロスコンパイラが高価であり、 ライセンス数が限られている。 18 テスト駆動開発による組み込みプログラミング[James Grenning]
  19. 19. デュアルターゲッティング戦略 19 ユニットテスト レベルのTDD ターゲット プロセッサ向け にコンパイル 評価ボード等で ユニットテスト を実行 ターゲット ハードウェア上で ユニットテスト を実行 ステージ1 ステージ2 ステージ3 ステージ4 ターゲット ハードウェア上 で受入れ テストを実行 ステージ5 頻度:高 頻度:低 ホスト環境で実施出来るユニットテストを高頻度に行い ターゲットハードウェアでのテストやデバッグを最小限にする テスト駆動開発による組み込みプログラミング[James Grenning]
  20. 20. デュアルターゲッティング戦略 20 ユニットテスト レベルのTDD ターゲット プロセッサ向け にコンパイル 評価ボード等で ユニットテスト を実行 ターゲット ハードウェア上で ユニットテスト を実行 ステージ1 ステージ2 ステージ3 ステージ4 ターゲット ハードウェア上 で受入れ テストを実行 ステージ5 頻度:高 頻度:低 テスト駆動開発による組み込みプログラミング[James Grenning] 組み込み領域においては ここの自動化が難しい!
  21. 21. 組み込み領域でシステムテスト自動化が進まない理由  組み込みソフトウェアの場合、下記の理由で適切なツールが 存在しない。  入力I/Fが多様であり、機器ごとに異なるため、  汎用のテストツールが使えない事が多い。  自動化のために機器内蔵ソフトウェアの変更が必要な場合がある。  UI以外のデジタル/アナログ信号入力に対応する必要がある。  出力の形態が製品それぞれであるため、  機器に合わせた多様な方法で出力をキャプチャーする必要がある。  テスト結果の期待値との比較、自動判定が難しい。 21 ツール Output Input ???? ? ??? ?? テスト対象機器
  22. 22. 22 お問合せ先:営業本部 〒163-0434 新宿区西新宿2-1-1新宿三井ビル34F(私書箱302号) TEL:03-5339-2114 mail:sales@mamezou.com
  23. 23. まとめ 23 IoT時代においては、アジャイル開発は必須。 組み込みソフトウェア開発のアジャイル化は 「デュアルターゲッティング戦略」で乗り切ろう。 組み込みソフトウェア開発におけるシステムテスト自動化ツー ルは、多様な入出力への対応がキモ。 アジャイル開発にはリファクタリングが必須だが、 リファクタリングには自動化されたテストが必須。

×