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

23
ET/IoT2016 講講講講講講講講講講講講講 講講講講講講講講講 Ver 1.00 2016 講 11 講 17/18 講 講講講講 講講 IoT 講講講

Upload: hiroaki-matsunaga

Post on 16-Feb-2017

32 views

Category:

Software


0 download

TRANSCRIPT

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

【 ET/IoT2016 講演】

テスト自動化から始める 組込アジャイル開発

Ver 1.002016 年 11 月 17/18 日

株式会社 豆蔵

IoT 時代の

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

自己紹介 ー 松永広明

株式会社 豆蔵 シニアコンサルタント (2015 年~)1990 年のキャリアスタートから、一貫して組込ソフ

トウェアの開発に従事。2011 年ごろよりアジャイル開発を推進。書籍

• わかりやすいアジャイル開発の教科書 (2012) レビュアー

資格: ScrumAlliance認定 Scrum Professional認定 Scrum Master

松永広明

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

“ モノ”のインターネット

3

様々な”モノ”がつながる

様々なサービスとつながる

世界中からデータが集ま

分析して利用する

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

IoT 時代のフィードバックループ

4

世界中からデータが集まる

分析して利用する

新しい用途を思いつく

新しい機能が必要になる

変化はすぐにやってくる。

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

5

もはやアジャイル開発は必須

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

6

アジャイル開発とテスト自動化

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

アジャイル開発のプロセス例 短い期間で潜在的出荷可能 (Potentially Shippable) な

製品開発を反復しながら進める

7

仕様

イテレーション

設計

実装

テスト

PSI PSI PSIPSI: Potentially Shippable Increment

PSI

仕様

設計

実装

テスト

仕様

設計

実装

テスト

仕様

設計

実装

テスト

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

建て増し旅館構造 PSI を積み重ねて開発を続けると、建て増し旅館のよう

な構造になりがち

8

PSI

PSI

PSI

PSI

PSI PSI

PSI

PSI

PSI

PSI

PSI

PSI

PSI

PSI

PSI

PSI

定期的にリファクタリング(アーキテクチャレベル)が必要

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

事例:リファクタリング禁止事件

9

あるコンシューマー向け製品において、市場にて重大な機能不全発覚

原因は、担当者が自分の判断で特定の処理にリファクタリングを施したことだった

リファクタリング後のテストは間引いて実行されており、不具合の検出が出来なかった

後日マネジメントより、勝手なリファクタリングを行うことを禁止する通達が出た

なにが問題か?

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

正しいリファクタリング

10

コーディング

自動回帰テスト

リファクター

外から見た動作を変えることなく、内部構造を整理する

回帰テストを定期的に実行し品質を保証

する

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

手動テストじゃダメなの?

11

手動テストじゃダメな

の?

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

アジャイル開発の場合

12

コーディングテスト

リファクター

コーディングテスト

リファクター

コーディングテスト

リファクター

コーディングテスト

リファクター

仕様

イテレーション

設計

実装

テスト

仕様

設計

実装

テスト

仕様

設計

実装

テスト

仕様

設計

実装

テスト

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

アジャイル開発の場合

13

開発が進む間、回帰テストの量は増加し続けるため手動で行うにはテストを間引くか、人海戦術しかない

イテレーション 1 イテレーション 1イテレーション 2

イテレーション 1イテレーション 2

イテレーション 3

イテレーション 1イテレーション 2

イテレーション 4

イテレーション 3テストケース数

イテレーション数

仕様

イテレーション

設計

実装

テスト

仕様

設計

実装

テスト

仕様

設計

実装

テスト

仕様

設計

実装

テスト

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

14

テスト自動化導入のコツ

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

どんなテストを自動化すべきか テスト自動化に向いているもの

何度も繰り返し実行するテスト(回帰テストなど) パラメータだけを変更して同じシナリオで何度も実行するテスト 限界系のテスト、連続(耐久)系のテスト 単純な作業を繰り返すテスト(状態遷移テストなど)

テスト自動化に向かないもの 一度しか実施しないテスト(自動化のコストに見合わない) 手順の複雑なテスト(単純なテストに分解すべき) 探索的テスト(人間の創造力が必要) 期待結果が想定できないもの(株価など)

15

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

テスト自動化導入に対する誤解誤解 説明

自動化ツールを使えばコストが削減できるはずだ!

自動化の導入にはコスト、特に初期コストが多くかかるため、コスト削減を目的にすると早期に失敗と判断してしまいがちになります。コスト削減は、自動化による品質向上の結果と捉え、中長期的に取り組むべきでしょう。

自動化ツールを使うと、手動テストは要らなくなるんだよね

スクリプトを作った後は、少なくともそのスクリプトが意図した通りに動作するかどうかのテストは必要です。また、自動テストの主な役割は回帰テストなので、手動テストがなくなることはありません。

自動化ツールを使うと新しいバグをどんどん見つけてくれて楽ちん♪

自動テストは、プログラムされた期待値以外のバグを発見することは出来ません。回帰テストを頻繁に実行することで、品質を保証し続けることが自動化の主な目的です。

自動テストが Fail したら、即刻バグとして報告します!

自動テストが Fail した場合にわかるのは「何らかの調査が必要」という事だけです。自動スクリプトの不具合かも知れないし、ツール実行マシンのリソース不足の可能性などもあり得ます。

テストの自動化には、プログラミングのスキルが必要だ。

テスト設計者とスクリプト作成者の役割を分離することにより、テスト設計者はほぼ自然言語でテストケースを記述できます。

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

17

組込ソフトウェア開発におけるテストプロセス

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

組み込み開発におけるテストの課題ハードウェアボトルネック

プロジェクト後半までターゲットハードウェアが準備できない。 ターゲットハードウェアが高価で不足している。ハードウェア自体にバグがあり、ソフトウェアバグとの切り分

けが難しくなる。 ターゲットビルドやターゲットへのロードに時間がかかるせい

で、コーディングからテストまでのサイクルが長くなる。 ターゲットハードウェア向けのクロスコンパイラが高価であり、ライセンス数が限られている。

18

テスト駆動開発による組み込みプログラミング [James Grenning]

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

デュアルターゲッティング戦略

19

ユニットテストレベルのTDD

ターゲットプロセッサ向けにコンパイル

評価ボード等でユニットテスト

を実行

ターゲットハードウェア上でユニットテスト

を実行

ステージ1 ステージ2 ステージ3 ステージ4

ターゲットハードウェア上

で受入れテストを実行

ステージ5

頻度:高 頻度:低

ホスト環境で実施出来るユニットテストを高頻度に行い

ターゲットハードウェアでのテストやデバッグを最小限にする

テスト駆動開発による組み込みプログラミング [James Grenning]

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

デュアルターゲッティング戦略

20

ユニットテストレベルのTDD

ターゲットプロセッサ向けにコンパイル

評価ボード等でユニットテスト

を実行

ターゲットハードウェア上でユニットテスト

を実行

ステージ1 ステージ2 ステージ3 ステージ4

ターゲットハードウェア上

で受入れテストを実行

ステージ5

頻度:高 頻度:低

テスト駆動開発による組み込みプログラミング [James Grenning]

組み込み領域においては

ここの自動化が難しい!

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

組み込み領域でシステムテスト自動化が進まない理由

組み込みソフトウェアの場合、下記の理由で適切なツールが存在しない。 入力 I/F が多様であり、機器ごとに異なるため、

汎用のテストツールが使えない事が多い。 自動化のために機器内蔵ソフトウェアの変更が必要な場合がある。 UI以外のデジタル / アナログ信号入力に対応する必要がある。

出力の形態が製品それぞれであるため、 機器に合わせた多様な方法で出力をキャプチャーする必要がある。 テスト結果の期待値との比較、自動判定が難しい。

21ツール

Output

Input

?????????? テスト対象機器

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

22お問合せ先:営業本部 〒 163-0434 新宿区西新宿 2-1-1 新宿三井ビル 34F(私書箱 302号 )   TEL:03-5339-2114   mail :[email protected]

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

まとめ

23

IoT 時代においては、アジャイル開発は必須。

組み込みソフトウェア開発のアジャイル化は「デュアルターゲッティング戦略」で乗り切ろう。

組み込みソフトウェア開発におけるシステムテスト自動化ツールは、多様な入出力への対応がキモ。

アジャイル開発にはリファクタリングが必須だが、リファクタリングには自動化されたテストが必須。