SlideShare ist ein Scribd-Unternehmen logo
1 von 23
【ET/IoT2016講演】
テスト自動化から始める 組込アジャイル開発
Ver 1.00
2016年11月17/18日
株式会社 豆蔵
IoT時代の
自己紹介 ー 松永広明
株式会社 豆蔵 シニアコンサルタント(2015年~)
1990年のキャリアスタートから、一貫して組込ソフトウェアの開
発に従事。
2011年ごろよりアジャイル開発を推進。
書籍
• わかりやすいアジャイル開発の教科書(2012) レビュアー
資格:ScrumAlliance
認定Scrum Professional
認定Scrum Master
松永広明
“モノ”のインターネット
3
様々な”モノ”がつ
ながる
様々なサービスと
つながる
世界中から
データが集まる
分析して
利用する
IoT時代のフィードバックループ
4
世界中から
データが集まる
分析して
利用する
新しい用途
を思いつく
新しい機能
が必要になる
変化はすぐにやってくる。
5
もはやアジャイル開発は必須
6
アジャイル開発とテスト自動化
アジャイル開発のプロセス例
 短い期間で潜在的出荷可能(Potentially Shippable)な製
品開発を反復しながら進める
7
仕様
イテレーション
設計
実装
テスト
PSI: Potentially Shippable Increment
仕様
設計
実装
テスト
仕様
設計
実装
テスト
仕様
設計
実装
テスト
建て増し旅館構造
 PSIを積み重ねて開発を続けると、建て増し旅館のよう
な構造になりがち
8
PSI
PSI
PSI
PSI
PSI PSI
PSI
PSI
PSI
PSI
PSI
PSIPSI
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時代においては、アジャイル開発は必須。
組み込みソフトウェア開発のアジャイル化は
「デュアルターゲッティング戦略」で乗り切ろう。
組み込みソフトウェア開発におけるシステムテスト自動化ツー
ルは、多様な入出力への対応がキモ。
アジャイル開発にはリファクタリングが必須だが、
リファクタリングには自動化されたテストが必須。

Weitere ähnliche Inhalte

Was ist angesagt?

DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
Teruo Adachi
 

Was ist angesagt? (20)

20130928 JAWS Festa Kansai 2013 SonicGarden流devops
20130928 JAWS Festa Kansai 2013 SonicGarden流devops20130928 JAWS Festa Kansai 2013 SonicGarden流devops
20130928 JAWS Festa Kansai 2013 SonicGarden流devops
 
Agile japan2016 a 2 ricksoft
Agile japan2016 a 2 ricksoftAgile japan2016 a 2 ricksoft
Agile japan2016 a 2 ricksoft
 
20161110 Cybozu Days 2016 ランチセッション 『キントーンと共に飛び込む、クラウドが当たり前になった企業情報システムの未来』
20161110 Cybozu Days 2016 ランチセッション 『キントーンと共に飛び込む、クラウドが当たり前になった企業情報システムの未来』20161110 Cybozu Days 2016 ランチセッション 『キントーンと共に飛び込む、クラウドが当たり前になった企業情報システムの未来』
20161110 Cybozu Days 2016 ランチセッション 『キントーンと共に飛び込む、クラウドが当たり前になった企業情報システムの未来』
 
受託開発とRubyGems
受託開発とRubyGems受託開発とRubyGems
受託開発とRubyGems
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
 
Atlassian Summit Europe 2017の参加報告(Aug Tokyo #22)
Atlassian Summit Europe 2017の参加報告(Aug Tokyo #22)Atlassian Summit Europe 2017の参加報告(Aug Tokyo #22)
Atlassian Summit Europe 2017の参加報告(Aug Tokyo #22)
 
エンタープライズ・インフラ構築・運用でもDevOpsを活用しよう(CloudNative Days Spring 2021 ONLINE、2021年3月1...
エンタープライズ・インフラ構築・運用でもDevOpsを活用しよう(CloudNative Days Spring 2021 ONLINE、2021年3月1...エンタープライズ・インフラ構築・運用でもDevOpsを活用しよう(CloudNative Days Spring 2021 ONLINE、2021年3月1...
エンタープライズ・インフラ構築・運用でもDevOpsを活用しよう(CloudNative Days Spring 2021 ONLINE、2021年3月1...
 
ISACA2017年10月例会「アジャイル開発における開発プロセスと監査ポイント」
ISACA2017年10月例会「アジャイル開発における開発プロセスと監査ポイント」ISACA2017年10月例会「アジャイル開発における開発プロセスと監査ポイント」
ISACA2017年10月例会「アジャイル開発における開発プロセスと監査ポイント」
 
大きなSIerの中で「アジャイル開発で飯を食う」までの歩み-第2部-
大きなSIerの中で「アジャイル開発で飯を食う」までの歩み-第2部-大きなSIerの中で「アジャイル開発で飯を食う」までの歩み-第2部-
大きなSIerの中で「アジャイル開発で飯を食う」までの歩み-第2部-
 
DevOps 概要 - インフラ革命、今起きていること
DevOps 概要 - インフラ革命、今起きていることDevOps 概要 - インフラ革命、今起きていること
DevOps 概要 - インフラ革命、今起きていること
 
All about 開発本部infra部 TASKs
All about 開発本部infra部 TASKsAll about 開発本部infra部 TASKs
All about 開発本部infra部 TASKs
 
Aj2017
Aj2017Aj2017
Aj2017
 
Future tech night #12~goで始めるサーバレスファーストという選択肢~
Future tech night #12~goで始めるサーバレスファーストという選択肢~Future tech night #12~goで始めるサーバレスファーストという選択肢~
Future tech night #12~goで始めるサーバレスファーストという選択肢~
 
Web Component Framework Urushiのご紹介(OSC2017 Tokyo/Spring)
Web Component Framework Urushiのご紹介(OSC2017 Tokyo/Spring)Web Component Framework Urushiのご紹介(OSC2017 Tokyo/Spring)
Web Component Framework Urushiのご紹介(OSC2017 Tokyo/Spring)
 
アジャイルをはじめてみよう(チュートリアル付き):Agile Japan 2013
アジャイルをはじめてみよう(チュートリアル付き):Agile Japan 2013アジャイルをはじめてみよう(チュートリアル付き):Agile Japan 2013
アジャイルをはじめてみよう(チュートリアル付き):Agile Japan 2013
 
リリースを支える負荷測定
リリースを支える負荷測定リリースを支える負荷測定
リリースを支える負荷測定
 
アジャイルをシミュレーションで理解する
アジャイルをシミュレーションで理解するアジャイルをシミュレーションで理解する
アジャイルをシミュレーションで理解する
 
プロダクト開発におけるプロダクトマネージャーの役割とは #‎devsumi‬
プロダクト開発におけるプロダクトマネージャーの役割とは #‎devsumi‬プロダクト開発におけるプロダクトマネージャーの役割とは #‎devsumi‬
プロダクト開発におけるプロダクトマネージャーの役割とは #‎devsumi‬
 
OSSコンソーシアム .NET開発基盤部会 2017 活動方針・部会紹介
OSSコンソーシアム .NET開発基盤部会 2017 活動方針・部会紹介OSSコンソーシアム .NET開発基盤部会 2017 活動方針・部会紹介
OSSコンソーシアム .NET開発基盤部会 2017 活動方針・部会紹介
 
kintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツールkintoneの開発プロセスとプロジェクト管理ツール
kintoneの開発プロセスとプロジェクト管理ツール
 

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

クラウド時代のエンジニア魂と企業に必要なカルチャーチェンジ(前半)
クラウド時代のエンジニア魂と企業に必要なカルチャーチェンジ(前半)クラウド時代のエンジニア魂と企業に必要なカルチャーチェンジ(前半)
クラウド時代のエンジニア魂と企業に必要なカルチャーチェンジ(前半)
irix_jp
 

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

座談会資料(趣旨説明資料) 20161117
座談会資料(趣旨説明資料) 20161117座談会資料(趣旨説明資料) 20161117
座談会資料(趣旨説明資料) 20161117
 
アジャイルプラクティス導入事例
アジャイルプラクティス導入事例アジャイルプラクティス導入事例
アジャイルプラクティス導入事例
 
Data-centricなML開発
Data-centricなML開発Data-centricなML開発
Data-centricなML開発
 
IoTに活用!センサの基礎セミナー
IoTに活用!センサの基礎セミナーIoTに活用!センサの基礎セミナー
IoTに活用!センサの基礎セミナー
 
【第20回】オープニング
【第20回】オープニング【第20回】オープニング
【第20回】オープニング
 
オープニング
オープニングオープニング
オープニング
 
オープニング
オープニングオープニング
オープニング
 
Data-Centric AI開発における データ生成の取り組み
Data-Centric AI開発における データ生成の取り組みData-Centric AI開発における データ生成の取り組み
Data-Centric AI開発における データ生成の取り組み
 
シン・コラボレーション
シン・コラボレーションシン・コラボレーション
シン・コラボレーション
 
今すぐはじめるIoT_配布用
今すぐはじめるIoT_配布用今すぐはじめるIoT_配布用
今すぐはじめるIoT_配布用
 
170520 DataSpider DevConn Hackathon
170520 DataSpider DevConn Hackathon170520 DataSpider DevConn Hackathon
170520 DataSpider DevConn Hackathon
 
アジャイル開発のためのDatadog
アジャイル開発のためのDatadogアジャイル開発のためのDatadog
アジャイル開発のためのDatadog
 
CMC_Meetup八子プレゼン 20170412
CMC_Meetup八子プレゼン 20170412CMC_Meetup八子プレゼン 20170412
CMC_Meetup八子プレゼン 20170412
 
データ視覚化・分析アプリケーションの超速開発
データ視覚化・分析アプリケーションの超速開発データ視覚化・分析アプリケーションの超速開発
データ視覚化・分析アプリケーションの超速開発
 
2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装
2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装
2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装
 
IoTビジネス共創ラボ 第15回勉強会 オープニング
IoTビジネス共創ラボ 第15回勉強会 オープニングIoTビジネス共創ラボ 第15回勉強会 オープニング
IoTビジネス共創ラボ 第15回勉強会 オープニング
 
クラウド時代のエンジニア魂と企業に必要なカルチャーチェンジ(前半)
クラウド時代のエンジニア魂と企業に必要なカルチャーチェンジ(前半)クラウド時代のエンジニア魂と企業に必要なカルチャーチェンジ(前半)
クラウド時代のエンジニア魂と企業に必要なカルチャーチェンジ(前半)
 
「IoTビジネスの嘘とホント~必要な検討事項と技術検証~」Developer Summit kansai 20160915
「IoTビジネスの嘘とホント~必要な検討事項と技術検証~」Developer Summit kansai 20160915「IoTビジネスの嘘とホント~必要な検討事項と技術検証~」Developer Summit kansai 20160915
「IoTビジネスの嘘とホント~必要な検討事項と技術検証~」Developer Summit kansai 20160915
 
マイクロソフトにおけるオープンソース戦略 ソフトウェア開発者が実現できること
マイクロソフトにおけるオープンソース戦略 ソフトウェア開発者が実現できることマイクロソフトにおけるオープンソース戦略 ソフトウェア開発者が実現できること
マイクロソフトにおけるオープンソース戦略 ソフトウェア開発者が実現できること
 
データ視覚化分析アプリケーションの超速開発
データ視覚化分析アプリケーションの超速開発データ視覚化分析アプリケーションの超速開発
データ視覚化分析アプリケーションの超速開発
 

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

Hinweis der Redaktion

  1. アジャイル開発にはテスト自動化が必須。なぜかというのをこれから説明します。