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

Post on 16-Feb-2017

32 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

【 ET/IoT2016 講演】

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

Ver 1.002016 年 11 月 17/18 日

株式会社 豆蔵

IoT 時代の

自己紹介 ー 松永広明

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

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

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

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

松永広明

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

3

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

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

世界中からデータが集ま

分析して利用する

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

4

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

分析して利用する

新しい用途を思いつく

新しい機能が必要になる

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

5

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

6

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

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

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

7

仕様

イテレーション

設計

実装

テスト

PSI PSI PSIPSI: Potentially Shippable Increment

PSI

仕様

設計

実装

テスト

仕様

設計

実装

テスト

仕様

設計

実装

テスト

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

な構造になりがち

8

PSI

PSI

PSI

PSI

PSI PSI

PSI

PSI

PSI

PSI

PSI

PSI

PSI

PSI

PSI

PSI

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

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

9

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

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

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

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

なにが問題か?

正しいリファクタリング

10

コーディング

自動回帰テスト

リファクター

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

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

する

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

11

手動テストじゃダメな

の?

アジャイル開発の場合

12

コーディングテスト

リファクター

コーディングテスト

リファクター

コーディングテスト

リファクター

コーディングテスト

リファクター

仕様

イテレーション

設計

実装

テスト

仕様

設計

実装

テスト

仕様

設計

実装

テスト

仕様

設計

実装

テスト

アジャイル開発の場合

13

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

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

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

イテレーション 3

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

イテレーション 4

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

イテレーション数

仕様

イテレーション

設計

実装

テスト

仕様

設計

実装

テスト

仕様

設計

実装

テスト

仕様

設計

実装

テスト

14

テスト自動化導入のコツ

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

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

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

15

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

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

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

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

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

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

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

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

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

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

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

17

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

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

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

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

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

18

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

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

19

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

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

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

を実行

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

を実行

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

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

で受入れテストを実行

ステージ5

頻度:高 頻度:低

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

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

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

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

20

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

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

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

を実行

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

を実行

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

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

で受入れテストを実行

ステージ5

頻度:高 頻度:低

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

組み込み領域においては

ここの自動化が難しい!

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

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

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

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

21ツール

Output

Input

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

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

まとめ

23

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

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

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

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

top related