Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JUnit導入の成功と失敗.pdf
Search
SHIMANE, Yoshikazu
October 28, 2015
Technology
0
2.8k
JUnit導入の成功と失敗.pdf
JUnit導入の成功と失敗
SHIMANE, Yoshikazu
October 28, 2015
Tweet
Share
More Decks by SHIMANE, Yoshikazu
See All by SHIMANE, Yoshikazu
テスト技法を使ったテストケースの表現方法/How to express test cases using test techniques
shimashima35
0
980
VSTePのテスト観点出しで失敗した事例についての紹介/Failure case of test viewpoint derivation
shimashima35
0
650
組織横断部門におけるバグ数可視化の全社導入の事例/Example_of_company-wide_bug_number_visualization in_cross-organizational_departments
shimashima35
1
350
JaSST Tokyo実行委員のお仕事/Job of JaSST executive committee
shimashima35
0
690
What is “Quality” ?
shimashima35
0
950
品質"実質"無料キャンペーン始めます / Start_quality_real_free_campaign
shimashima35
2
5.3k
明日から始めるSelenideによるブラウザテスト 2018年版/ Browser_test_by_selenide_to_start_from_tomorrow_in_2018
shimashima35
1
830
SelenideよるDSL風E2Eテスト基盤開発の実例 in Osaka /Example_of_E2E_Automation_Test_Architecture_By_Selenide_in_Osaka
shimashima35
0
1.1k
SelenideよるDSL風E2Eテスト基盤開発の実例/Example_of_E2E_Automation_Test_Architecture_By_Selenide
shimashima35
0
990
Other Decks in Technology
See All in Technology
Terraform Stacks入門 #HashiTalks
msato
0
350
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
2
530
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
220
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
スクラム成熟度セルフチェックツールを作って得た学びとその活用法
coincheck_recruit
1
140
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
190
[FOSS4G 2024 Japan LT] LLMを使ってGISデータ解析を自動化したい!
nssv
1
210
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
590
いざ、BSC討伐の旅
nikinusu
2
780
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
7
810
Featured
See All Featured
A Tale of Four Properties
chriscoyier
156
23k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Why Our Code Smells
bkeepers
PRO
334
57k
Practical Orchestrator
shlominoach
186
10k
Thoughts on Productivity
jonyablonski
67
4.3k
Building Your Own Lightsaber
phodgson
103
6.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
The Language of Interfaces
destraynor
154
24k
Transcript
JUnit導入の成功と失敗 #Java騎士団 第一回円卓会議@2015/10/27 @shimashima35
自己紹介 @shimashima35 http://srad.jp/~shimashima/ 中小SI勤務(基本下請けなし) Java歴 14年くらい 好きなもの maven, テスト, ソフトウェエ
ア工学全般 最近IoTで遊んでいます JaSST(ソフトウェアテストシンポジウム) Tokyo 実行委員 JSTQB-FL取得 (New @2015/10/26)
本日の内容 JUnitによるUnitTest導入の成功事例と失敗事例の紹介。 成功要因/失敗要因についての考察。 時間があれば「JMeterによる疲れないリグレッションテスト」も……。
UnitTestとは 今回の講演でのUnitTestはTDDのUnitTestではありません。 自分は書いたプログラムが自分の意図通りに動くことを確認・保証 するためのもの。 一般的な品質保証の考えでの「単体テスト」です。
成功事例 概要 ❏ 金融系大規模案件 (300人月以上かな?) ❏ 最大プログラマだけで40名程度 ❏ 2007年頃 ❏
Java5+Spring 2.5+Hibernate3.2(Annotation)+Spring MVC ❏ まだSpring MVCもHibernate 3.2も事例がない ❏ 受注したベンダ中に複数の協力会社社員で構成 ❏ 大半は特定の1社 ❏ 自分も協力会社(Not 特定の1社)として入った一人
成功事例 JUnit導入経緯と結果 ❏ 金融系で高品質を求めた ❏ アーキテクトが主導した ❏ 最終的にお客様とコードカバレッジ100%でコミットした ❏ 厳密はgetter/setterなどは除外してよい
❏ それでも最終的には95%程度まで達成 ❏ テストチームによる結合テスト中でも気軽にリファクタリング ❏ コードに対して責任を持つ
成功事例 要因 ❏ 初期段階からUnitTestを意識し設計 ❏ レイヤーアーキテクチャ、DIなど ❏ アーキテクトの力量 ❏ UnitTest用フレームワークを一人で作成
❏ アーキテクトによる適度なコードレビュー ❏ おしなべて高かったスキル ❏ プロジェクトとしてのコミットメント ❏ プロジェクト内の意識の高さ
失敗事例 概要 ❏ 広告サイト構築案件 (200人月程度?) ❏ 最大プログラマだけで60名程度 ❏ 2009年頃 ❏
Java6+Seasar2+S2JDBC+SASturts ❏ 自社で受注 ❏ 協力会社多数参加
失敗事例 JUnit導入経緯 ❏ JUnit成功体験があった自分が参加 ❏ アーキテクトも「できるだけUnitTestは書きたい」という思い ❏ マネジャー的には「どうでもよい」 ❏ あった方がよい
❏ でも、それで進捗が遅れるのはなぁ…
失敗事例 JUnit導入結果 ❏ カバレッジ率なにそれ? ❏ UnitTestはほぼなし ❏ 皆があらゆるところを修正するのでテストメンテが事実上破た ん ❏
mvn -Dmaven.test.skip=true
失敗事例 要因 ❏ アーキテクトがテストにコミットできなかった ❏ マルチタスク ❏ マネジャーからの扱い(UnitTestはなくてもよい) ❏ スケジュールプレッシャー
❏ テストよりまず動くもの ❏ プログラマのアサインが画面単位
失敗事例 アサインの問題 1. アサインが画面単位 2. 一人が全てのレイヤまたがって実装を行う 3. 画面に近い部分は別としてService・Domain・Persist層を全 員触る a.
共通化されない、Interfaceが契約的ではない、APIが壊れ る b. 全員が全レイヤーのテストの書き方を覚えなければならな い
成功事例 アサインは? 1. アサインがレイヤー単位 2. 画面近く画面/機能単位でアサインされる 3. Service層/Domain層/Persist層はごく少のアーキテクチーム が受け持つ a.
業務単位である程度分割されるので、業務単位でクラスの オーナーが決まる b. オーナーがそのクラスの責任者として実装およびテストを 書く
まとめ
まとめ ❏ スケジュールプレッシャーは天敵 ❏ マネジャーの支援があると導入しやすい ❏ 「テストのための設計・準備」は必要 ❏ 意外なところでアサインの単位も重要
JMeterによる疲れないテスト
Selenium(WebDriver)あるある ❏ テストが壊れる ❏ メンテナンスコストが高い ❏ 時間がかかる
JMeterによる簡易テスト ❏ http(s)によるリクエストレベルでのテスト ❏ とりあえずhttpステータスコードのチェック ❏ 400番台、500番台は自動的にNG ❏ 200番台はOK ❏
302などの自動リダイレク対応 ❏ テストシナリオはキャプチャー&リプレイをベースに修正
SeleniumとJMeter ❏ Seleniumのつかいどころ ❏ 画面の動きを見たい・確認したい場合 ❏ Ajax ❏ レイアウト検証 ❏
JMeterのつかいどころ ❏ Web画面からロジックまで含めて検証 ❏ UIの細かい部分は意識しなくてよい場合 ❏ 何を検証したいかによって使い分けましょう
ご清聴ありがとうございました。