SlideShare a Scribd company logo
0
何故エンジニアはテストをしないのか
エスキュービズム・テクノロジー
エンジニア勉強会
February 4,2015
S-cubism Technology Inc.
1
・はじめに
・本の紹介(何が書いてあった)
・なぜエンジニアはテストしないのか
・どうすればエンジニアはテストするのか
もくじ
2
dev_winのタイムラインに現れる
いかにもWindows好き専用本。
はじめに
3
買って読んでみました。
はじめに
4
・はじめに
・本の紹介(何が書いてあった)
・なぜエンジニアはテストしないのか
・どうすればエンジニアはテストするのか
何故エンジニアはテストをしないのか
5
・C#素晴らしいよ
・.NETは素晴らしいよ
・環境構築は重要だよ
よくあるMicrosoft好き専用本だった
何が書いてあった
6
C#言語のこれは覚えておけ
・基本的な構文
・ジェネリック
・LINQ
・ラムダ式
・null条件演算子
何が書いてあった(詳細)
7
Microsoftが好きな設計を覚えておけ
・OOP
・イベント駆動
・MVVMとデータバインド
・例外処理
何が書いてあった(詳細)
8
Microsoftのデータ管理を覚えておけ
・LINQ to SQL
・Entity Framework
何が書いてあった(詳細)
9
最低限環境は揃えてくれ
・バージョン管理
・タスク管理
・テスト環境
何が書いてあった(詳細)
10
「Microsoftの製品なら、出来るよ」
何が書いてあった(要点)
C#、Visualstudio Online、Team Foundation Server、
データ分析、リリース計画の定義、etc...
全284p中、230pは、下準備(開発ツールの運用方法)に終始します。
あれ、チーム開発はどこへ行った?
11
・PL/PMは、飽くまでメンバー全体で最適な割り振りを行う。
(個々の最善パフォーマンスとは限らない。)
・適切な実装は前提として、
バージョン管理、テスト管理、リリース管理(+自動ビルド)、
を適切に。
・リリース計画は作って置き、機械的に操作してリリース。
リリース作業中に問題が起きたら、リリースを中止する。
・チームエクスプローラーを使おう(また製品の紹介)
何が書いてあった(チーム開発)
12
しかし、この本は素晴らしいことを書いてあった
チーム…開発...教科書?
13
・何故、エンジニアはテストしないのか!
・テストはどうするべきなのか!
・80p近くテストツールや考え方を指南!
チーム…開発...教科書?
14
・はじめに
・本の紹介(何が書いてあった)
・なぜエンジニアはテストしないのか
・どうすればエンジニアはテストするのか
何故エンジニアはテストをしないのか
15
どんなに、それらしい理由を並べ立てても、本当は。
何故エンジ二アはテストをしないのか
面倒だから
性善説の善性や責任感も、有限です。リソースのご利用は計画的に。
16
引用1(p24~p25)
C#で開発を行う場合には、Visual Studioの最も重要な機能であるF5デバ
ッグと単体テストを扱えるかどうかがポイントになります。(中略)F5デ
バッグで起動したWebに負荷をかけることが出来ます。最後の工程まで問
題が発見できないのではなく、作り始めてから作り終わるまでずっと問題
がないことを確認することは、今後必須の技術となります。
何故エンジ二アはテストをしないのか
17
引用2(p61)
ここまで、静的コード分析の必要性と効果を確認してきました。しかし、
実際のプロジェクトでは採用されていないことも多いでしょう。その理由
は大きく分けて2つあります。
1つは、静的コード分析が初めて登場したVisual Studio 2005では高価な上
位エディションでしか使用できない機能であったため、使ったことがない
人が多いということです。(中略)もう1つの理由はもっと重大で、Visual
Studio標準のテンプレートから新規作成した空のプロジェクトが警告にな
るため嫌になってしまうというものです。
何故エンジ二アはテストをしないのか
18
引用3(p62)
開発メンバーが「静的コード分析は難しくて納期に間に合いません」と言
って来たら「納期までに完成させられますが、瑕疵として修正する必要が
あるバグがどれだけあるか、私にはわかりません」と言っていると思うべ
きです。(中略)どれだけバグがあるかわからない状態では、瑕疵で直す
のにどれだけコストがかかるかわからないと言うことです
何故エンジ二アはテストをしないのか
※ 瑕疵(かし)
1.きず。欠点。
2.法律や当事者の予期するような状態や性質が欠けていること。
19
引用4(p159)
「Visual Studio=F5デバッグ」と言えるほど、代名詞ともいえる
この機能が最も手軽に動作を確認できる方法です。
何故エンジ二アはテストをしないのか
20
引用5 (p161)
「うちの開発者は自分の書いたコードを一度も動かさないんだよ」
と嘆くプロジェクトマネージャーやテストチームのメンバーの声を
聞いて、実際の開発者の話をよく聞いてみると、本当に一度も動か
していないことはほとんどないことが分かります。よくあるのは、
「1回しか動かしていない」ことです。それが問題の本質だと言え
ます。
何故エンジ二アはテストをしないのか
21
引用6 (p162)
(前略)しかし、多くの場合、簡単にF5デバッグができない開発を行
っているのです。
(中略)億劫
(中略)ちゃんと書けたはずだから
(中略)コードは変えたけど、さっき動いたから全部は
(中略)自分は確認しなくても、誰か他のところで確認される
(中略)つまり、F5デバッグができないということは十分にテス
トされないということなのです。
何故エンジ二アはテストをしないのか
22
引用7 (p163)
では、どう言った場面でF5デバッグができないのでしょうか。
(中略)「Windows Serverにインストールしないと動作確認できない」
(中略)開発用の仮のデータベース
(中略)データベースを自分で構築する方法もよくわからない
何故エンジ二アはテストをしないのか
23
引用8 (p163)
チーム開発の場合、新たに参加するメンバーが、自分が書いたプログラム
を動作させるために必要な構成を用意するのは、チームを創るリーダーや
発足メンバーの責任です。新たに参加するメンバーの役割ではありません。
(中略)F5デバッグができるといっても、エミュレータ―や他のアプリが
起動するまで時間のかかるスマートフォンアプリと拡張機能の開発は、デ
スクトップアプリより品質を保つのが難しいでしょう
(中略)動作確認をこなせる回数が少なければ少ないほど、品質が低くな
ります
何故エンジ二アはテストをしないのか
24
引用9 (p163)
(中略)F5でバックができるといっても、エミュレータ―や他のアプリが
起動するまで時間のかかるスマートフォンアプリと拡張機能の開発は、デ
スクトップアプリより品質を保つのが難しいでしょう
(中略)動作確認をこなせる回数が少なければ少ないほど、品質が低くな
ります。
何故エンジ二アはテストをしないのか
25
・テストしてる(ただし1回)
・実装中にテストできない
・億劫 つまり 面倒
・高機能&高速なテスト環境がない
何故エンジ二アはテストをしないのか
26
・はじめに
・本の紹介(何が書いてあった)
・なぜエンジニアはテストしないのか
・どうすればエンジニアはテストするのか
何故エンジニアはテストをしないのか
27
まず、考えること
1.デバッグしようと思ってから、開始できるまでを10秒以内に
2.初期データ、サンプルSQL用意コストはスケジュールに含める
3.テスト部品は資産・成果物に含め、共有すること
4.ローカルでテストできること
5.他の要因で面倒だと感じる場合には、自動化すること
6.自動化は、エンジニアにしかできない
チーム全体でこれらの理解を共有すること
どうすればエンジニアはテストするのか
28
クライアントアプリの場合
・MVC/MVVMのように、各境界を明確にしておく。
・デザイン(View)はそれのみでテスト出来るようにする
→ それぞれの境界でサンプルデータやモック差し替え可能に。
また、境界ごとにテストできるように
例1) 通常アプリ+DLLとして開発し、特殊アプリ+DLLにする
例2) Viewはロジックを見ず、ロジックはViewを見ない
例3) Viewはプログラムをビルドせずに確認できるようにする
どうすればエンジニアはテストするのか
29
自動単体テストを開発に組み込むには
・関数をテストする関数を用意する。
・それのコードガバレッジを100%にする。(TDDに近い)
・ガバレッジしていない部分が一目で分かるツールを使う。
ガバレッジ100%がバージョン管理されれば
テストの保守と改修がプロジェクトに含まれる(はず)。
初回のテスト関数の実装内容は、意味がないものでもよい。
(バージョン管理されれば、テストは成長する)
どうすればエンジニアはテストするのか
30
自動テスト用のデータソース
自動テスト用のデータソースは、リセットする必要がある
また、F5デバッグは強制終了などにより、不整合が起きる
F5デバッグ用のDBとは別に用意する
どうすればエンジニアはテストするのか
31
その他のMicrosoft製品テスト
・UI操作を記録した自動テスト(コード化された自動テスト)
・ロードテスト(Microsoft Web Test Recorder)
どうすればエンジニアはテストするのか
32
Webアプリでもステップ実行を
・純粋なロジック調査なら、
ステップ実行できる環境を構築してテストした方が良い
・やり方は、調べてません!
どうすればエンジニアはテストするのか

More Related Content

PDF
基礎からわかる、機械学習のソフトウェアテストのへの適用例 - 「Bag Of Words」を使った「類似チケットの検索」
PPTX
Marketing digital
PDF
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
PDF
Apresentação Projeto de Comunicação
DOCX
folk song
PPTX
Google Tag Manager Ptengine導入手順
PDF
とにかく楽してVue.jsでTypeScriptを使いたい
PDF
java-ja TDD 2nd
基礎からわかる、機械学習のソフトウェアテストのへの適用例 - 「Bag Of Words」を使った「類似チケットの検索」
Marketing digital
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
Apresentação Projeto de Comunicação
folk song
Google Tag Manager Ptengine導入手順
とにかく楽してVue.jsでTypeScriptを使いたい
java-ja TDD 2nd

Similar to 何故エンジニアはテストをしないのか (20)

PPT
Sue445 Style TDD #atest_hack
PDF
20121019 jenkins勉強会lt資料
PDF
エンジニア取扱説明書
PDF
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
PDF
開発者による現実的な自動化テスト及びRubyのテストツールについて
PDF
SeasarCon 2009 White TDD
PDF
TDD を自分の道具にしよう
PDF
Jenkins & Test
PDF
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
PDF
Test Yourself - テストを書くと何がどう変わるか
PDF
ゲームエンジンとMVC
PPTX
TDDはじめる前に
PDF
nseg第5回勉強会
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
PDF
20120927 findjob4 dev_ops
PPTX
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
PDF
はじめてのテスト技法
PDF
TypeScript 入門してみる
PDF
20121115 オープンソースでハイアベイラビリティ! ~クラスタ管理の設計構築ハウツー&エンジニア思考力~ 第二部
PDF
2016 新人研修 基本技術講座 (1)
Sue445 Style TDD #atest_hack
20121019 jenkins勉強会lt資料
エンジニア取扱説明書
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
開発者による現実的な自動化テスト及びRubyのテストツールについて
SeasarCon 2009 White TDD
TDD を自分の道具にしよう
Jenkins & Test
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
Test Yourself - テストを書くと何がどう変わるか
ゲームエンジンとMVC
TDDはじめる前に
nseg第5回勉強会
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
20120927 findjob4 dev_ops
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
はじめてのテスト技法
TypeScript 入門してみる
20121115 オープンソースでハイアベイラビリティ! ~クラスタ管理の設計構築ハウツー&エンジニア思考力~ 第二部
2016 新人研修 基本技術講座 (1)
Ad

More from エンジニア勉強会 エスキュービズム (20)

PDF
エスキュービズム新技術発表資料
PDF
小売りにおけるAIの可能性
PDF
React Redux Redux-Saga + サーバサイドレンダリング
PDF
Azure container service上でコンテナベースでオートスケールの検証をしてみた
PDF
Go言語によるWebアプリケーション開発
PDF
機械学習ライブラリ : TensorFlow
PDF
Developer Summit 2016 参加してきました。
PDF
Dockerを用いたマイクロサービスについて
PDF
Azureで動いている機械学習のいろいろについて
PDF
アルゴリズムとデータ構造(初歩)
PDF
PDF
【エンジニア勉強会】品質ってなんなのさ
PDF
【エンジニア勉強会】PMやってみた
PDF
Dockerを社内で使うために
エスキュービズム新技術発表資料
小売りにおけるAIの可能性
React Redux Redux-Saga + サーバサイドレンダリング
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Go言語によるWebアプリケーション開発
機械学習ライブラリ : TensorFlow
Developer Summit 2016 参加してきました。
Dockerを用いたマイクロサービスについて
Azureで動いている機械学習のいろいろについて
アルゴリズムとデータ構造(初歩)
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】PMやってみた
Dockerを社内で使うために
Ad

何故エンジニアはテストをしないのか