SlideShare a Scribd company logo
1 of 16
Download to read offline
単体テストをやってみた
既存サービスに単体テストを追加するチャレンジ
中垣 玄慧
やってみたこと
既存のウェブアプリに単体テストを入れる
● ウェブアプリ
● 目標:カバレッジ30%
なぜ単体テストを入れたのか
● バグを防ぐため
● 開発を速くするため
● きれいなコードを書くため
単体テストに使ったツール
● IntelliJ IDEA (IDE)
単体テストに使ったツール
● Sonarqube (コードインスペクションツール)
現時点でのメリット
boolean isKatakana(String str) {
return str.matches("^[ァ-ヴー・]*$");
}
boolean isKatakana(String str) {
return str.matches("^[ア-ン]*$");
}
● バグが見つかった
● コードレビューをしやすい
○ 仕様がわかりやすい
現時点でのメリット
現時点でのメリット
● 開発が速くなった
現時点でのデメリット
● コードを修正したらテストも修正する必要がある
● カバレッジが少なすぎて仕様の変更があっても失敗するテストは少ない
● 既存のプロジェクトにテストを入れるとなると大変
○ DIなどで他のクラスに頼ってるとモックのデータを作らなければならない
○ テストを書くモチベーションを維持するのが難しい
● テストしたいメソッドがDIが多い
テストを書くのが大変
さっきのメソッドのテスト
単体テストをやってみた結果
● 今のところそんなに効果はない
○ 仕様が変わったときにエラーがでてくれるまでカバレッジを上げたい
○ テストが落ちているとマスターにマージできるなくするようにしたい
○ TDD(Test Driven Development)もやってみたい
● Sonarqube見やすい
● Intellij使いやすい
長い道のりはまだまだ続く
目標30%まであと1228行

More Related Content

What's hot

初backlogで、試行錯誤。最終的にこうなった!
初backlogで、試行錯誤。最終的にこうなった!初backlogで、試行錯誤。最終的にこうなった!
初backlogで、試行錯誤。最終的にこうなった!Masahiro Ienaga
 
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightテストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightkyon mm
 
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニアSHIFT Inc.
 
分析可能なアジャイルQAでの取り組み
分析可能なアジャイルQAでの取り組み分析可能なアジャイルQAでの取り組み
分析可能なアジャイルQAでの取り組みHiroyuki Hanaue
 
Tester to developer ratio
Tester to developer ratioTester to developer ratio
Tester to developer ratioKoichi Uemura
 
DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテストの刷新
DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテストの刷新DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテストの刷新
DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテストの刷新tomohiro odan
 
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場Kotaro Ogino
 
ソフトウェアテストことはじめ2016年ver
ソフトウェアテストことはじめ2016年verソフトウェアテストことはじめ2016年ver
ソフトウェアテストことはじめ2016年verKosuke Fujisawa
 
ICST 2015 まるわかりDay! "ICST2015参加報告"
ICST 2015 まるわかりDay! "ICST2015参加報告"ICST 2015 まるわかりDay! "ICST2015参加報告"
ICST 2015 まるわかりDay! "ICST2015参加報告"SIGSTJ
 
ソフトウェアテストことはじめ
ソフトウェアテストことはじめソフトウェアテストことはじめ
ソフトウェアテストことはじめKosuke Fujisawa
 
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!虎の穴 開発室
 
詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasstkyon mm
 
Kaizen process with test #hackt
Kaizen process with test #hacktKaizen process with test #hackt
Kaizen process with test #hacktkyon mm
 
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)kyon mm
 
JaSST nano vol.7 「なぜペアワイズテストを使いこなせないのか」
JaSST nano vol.7 「なぜペアワイズテストを使いこなせないのか」JaSST nano vol.7 「なぜペアワイズテストを使いこなせないのか」
JaSST nano vol.7 「なぜペアワイズテストを使いこなせないのか」Touyou Horikawa
 
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpテストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpkyon mm
 
20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineerKazuaki Matsuo
 
ザ・ジェネラリスト #5000dai
ザ・ジェネラリスト #5000daiザ・ジェネラリスト #5000dai
ザ・ジェネラリスト #5000daikyon mm
 

What's hot (20)

初backlogで、試行錯誤。最終的にこうなった!
初backlogで、試行錯誤。最終的にこうなった!初backlogで、試行錯誤。最終的にこうなった!
初backlogで、試行錯誤。最終的にこうなった!
 
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightテストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
 
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
 
分析可能なアジャイルQAでの取り組み
分析可能なアジャイルQAでの取り組み分析可能なアジャイルQAでの取り組み
分析可能なアジャイルQAでの取り組み
 
Tester to developer ratio
Tester to developer ratioTester to developer ratio
Tester to developer ratio
 
DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテストの刷新
DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテストの刷新DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテストの刷新
DMMアカウントサービス フロントエンド改善支援のためのTestcafeを用いた自動e2eテストの刷新
 
Ai for software testing
Ai for software testingAi for software testing
Ai for software testing
 
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
 
ソフトウェアテストことはじめ2016年ver
ソフトウェアテストことはじめ2016年verソフトウェアテストことはじめ2016年ver
ソフトウェアテストことはじめ2016年ver
 
ICST 2015 まるわかりDay! "ICST2015参加報告"
ICST 2015 まるわかりDay! "ICST2015参加報告"ICST 2015 まるわかりDay! "ICST2015参加報告"
ICST 2015 まるわかりDay! "ICST2015参加報告"
 
ソフトウェアテストことはじめ
ソフトウェアテストことはじめソフトウェアテストことはじめ
ソフトウェアテストことはじめ
 
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!
 
詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst
 
Kaizen process with test #hackt
Kaizen process with test #hacktKaizen process with test #hackt
Kaizen process with test #hackt
 
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)
 
JaSST nano vol.7 「なぜペアワイズテストを使いこなせないのか」
JaSST nano vol.7 「なぜペアワイズテストを使いこなせないのか」JaSST nano vol.7 「なぜペアワイズテストを使いこなせないのか」
JaSST nano vol.7 「なぜペアワイズテストを使いこなせないのか」
 
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
 
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpテストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
 
20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer
 
ザ・ジェネラリスト #5000dai
ザ・ジェネラリスト #5000daiザ・ジェネラリスト #5000dai
ザ・ジェネラリスト #5000dai
 

Similar to 単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~

アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考えるyasuohosotani
 
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門Satoshi Watanabe
 
MagicPodで自動化率を爆上げしたハナシ
MagicPodで自動化率を爆上げしたハナシMagicPodで自動化率を爆上げしたハナシ
MagicPodで自動化率を爆上げしたハナシKohei Tai
 
Unit testで定時帰宅!
Unit testで定時帰宅!Unit testで定時帰宅!
Unit testで定時帰宅!Funato Takashi
 
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上Tatsuya Ishikawa
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployRyutaro YOSHIBA
 
Gui自動テストツール基本
Gui自動テストツール基本Gui自動テストツール基本
Gui自動テストツール基本Tsuyoshi Yumoto
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前にYasui Tsutomu
 
#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオン#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオンkyon mm
 
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略Naoki Umehara
 
事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン友隆 浅黄
 
Test automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transitionTest automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transitionTatsuya Ishikawa
 
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化Tatsuya Ishikawa
 
RICOH最終選考プレゼン資料
RICOH最終選考プレゼン資料RICOH最終選考プレゼン資料
RICOH最終選考プレゼン資料pyar6329
 
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理慎一 古賀
 
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテストJUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテストShuji Watanabe
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門陽一 滝川
 
テストとの上手な付き合い方
テストとの上手な付き合い方テストとの上手な付き合い方
テストとの上手な付き合い方Akira Suenami
 

Similar to 単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~ (20)

アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考える
 
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
 
MagicPodで自動化率を爆上げしたハナシ
MagicPodで自動化率を爆上げしたハナシMagicPodで自動化率を爆上げしたハナシ
MagicPodで自動化率を爆上げしたハナシ
 
Unit testで定時帰宅!
Unit testで定時帰宅!Unit testで定時帰宅!
Unit testで定時帰宅!
 
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
 
Gui自動テストツール基本
Gui自動テストツール基本Gui自動テストツール基本
Gui自動テストツール基本
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 
#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオン#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオン
 
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
 
事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン
 
Test automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transitionTest automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transition
 
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化
 
Nds#24 単体テスト
Nds#24 単体テストNds#24 単体テスト
Nds#24 単体テスト
 
RICOH最終選考プレゼン資料
RICOH最終選考プレゼン資料RICOH最終選考プレゼン資料
RICOH最終選考プレゼン資料
 
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
 
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテストJUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
 
テストとの上手な付き合い方
テストとの上手な付き合い方テストとの上手な付き合い方
テストとの上手な付き合い方
 
GDC2014_QA
GDC2014_QAGDC2014_QA
GDC2014_QA
 

More from ceres-inc

RustでWebAssembly
RustでWebAssemblyRustでWebAssembly
RustでWebAssemblyceres-inc
 
エンジニア力底辺のデザイナーが Vue.jsチャレンジ 
エンジニア力底辺のデザイナーが Vue.jsチャレンジ エンジニア力底辺のデザイナーが Vue.jsチャレンジ 
エンジニア力底辺のデザイナーが Vue.jsチャレンジ ceres-inc
 
Selenideを使って上司のよくある勘違いを回避するお話
Selenideを使って上司のよくある勘違いを回避するお話Selenideを使って上司のよくある勘違いを回避するお話
Selenideを使って上司のよくある勘違いを回避するお話ceres-inc
 
初心者による初心者のための システム作りの流れ
初心者による初心者のための システム作りの流れ初心者による初心者のための システム作りの流れ
初心者による初心者のための システム作りの流れceres-inc
 
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~ceres-inc
 
初心者による初心者のためのMySQLクエリチューニング
初心者による初心者のためのMySQLクエリチューニング初心者による初心者のためのMySQLクエリチューニング
初心者による初心者のためのMySQLクエリチューニングceres-inc
 

More from ceres-inc (6)

RustでWebAssembly
RustでWebAssemblyRustでWebAssembly
RustでWebAssembly
 
エンジニア力底辺のデザイナーが Vue.jsチャレンジ 
エンジニア力底辺のデザイナーが Vue.jsチャレンジ エンジニア力底辺のデザイナーが Vue.jsチャレンジ 
エンジニア力底辺のデザイナーが Vue.jsチャレンジ 
 
Selenideを使って上司のよくある勘違いを回避するお話
Selenideを使って上司のよくある勘違いを回避するお話Selenideを使って上司のよくある勘違いを回避するお話
Selenideを使って上司のよくある勘違いを回避するお話
 
初心者による初心者のための システム作りの流れ
初心者による初心者のための システム作りの流れ初心者による初心者のための システム作りの流れ
初心者による初心者のための システム作りの流れ
 
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
 
初心者による初心者のためのMySQLクエリチューニング
初心者による初心者のためのMySQLクエリチューニング初心者による初心者のためのMySQLクエリチューニング
初心者による初心者のためのMySQLクエリチューニング
 

単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~