ぼくのかんがえた iosテスト戦略

40
2013/3/18 ぼくのかんがえた iOSテスト戦略

Upload: naoki-umehara

Post on 24-May-2015

2.387 views

Category:

Documents


0 download

DESCRIPTION

2013/3/25に行われた「チキチキ第一回iOSテスト勉強会」の資料です。 いくつか省略していますがご了承ください。

TRANSCRIPT

Page 1: ぼくのかんがえた iOSテスト戦略

2013/3/18

ぼくのかんがえたiOSテスト戦略

Page 2: ぼくのかんがえた iOSテスト戦略

梅原 直樹うめはら なおき

Twitter:@numehahttp://numeha.hatenablog.com/

Page 3: ぼくのかんがえた iOSテスト戦略

職業:ソフトウェア・エンジニア

•Leader 50% 愛されるチームリーダを目指して

•Developer 20% Ruby Java Objective-C

•Test Engineer 20% Jenkins RSpec Junit GHUnit

•雑用 10% (あれやこれや)

Page 4: ぼくのかんがえた iOSテスト戦略

iOS歴 : 8ヶ月まだ素人です

Page 5: ぼくのかんがえた iOSテスト戦略

⚠当日は自分が携わった

製品のムービーを流しました

Page 6: ぼくのかんがえた iOSテスト戦略

ぼくのかんがえたiOSテスト戦略

Page 7: ぼくのかんがえた iOSテスト戦略

テストを制するものは

ソフトウェアを制す

by @numeha

Page 8: ぼくのかんがえた iOSテスト戦略

えっ!

Page 9: ぼくのかんがえた iOSテスト戦略

えっ!えっ!!

Page 10: ぼくのかんがえた iOSテスト戦略

未だに

http://caiomm.deviantart.com/art/Super-Excel-170213919

とか...

Page 11: ぼくのかんがえた iOSテスト戦略

http://www.flickr.com/photos/nyuhuhuu/4442144329/

なぜテストをするのか

バグ発見?

開発を促進?

品質向上?

リファクタリング?

Page 12: ぼくのかんがえた iOSテスト戦略

テストは奥が深い...

Page 13: ぼくのかんがえた iOSテスト戦略

お客様に自信を持ってリリースしたい

Page 14: ぼくのかんがえた iOSテスト戦略

Small Tests (単体テスト)

 最小単位のモジュール内テスト

Medium Tests (結合テスト)

 二つ以上のモジュールを組み合わせたテスト

Large Tests (受け入れ/End-to-Endテスト)

 ユーザが利用する単位の一番外側のテスト

テスト対象

Page 15: ぼくのかんがえた iOSテスト戦略

Small Tests (単体テスト)

 自分のコードに自信を持てる

Medium Tests (結合テスト)

 相手のモジュールとの結合に自信を持てる

Large Tests (受け入れ/End-to-Endテスト)

 リリースに自信を持てる

テスト対象と自信

Page 16: ぼくのかんがえた iOSテスト戦略

Small Tests (単体テスト)

 自分のコードに自信を持てる

Medium Tests (結合テスト)

 相手のモジュールとの結合に自信を持てる

Large Tests (受け入れ/End-to-Endテスト)

 リリースに自信を持てる

テスト対象と自信

- テスト戦略 -

一番外側を重視せよ

Page 17: ぼくのかんがえた iOSテスト戦略

内部品質

外部品質

small

medium

large

- テスト戦略 -

外部品質>内部品質

Page 18: ぼくのかんがえた iOSテスト戦略

1. 開発とテストを融合する

SoftwareEngineer

QualityEngineer

Page 19: ぼくのかんがえた iOSテスト戦略

ぼくのかんがえたiOSテスト戦略

Page 20: ぼくのかんがえた iOSテスト戦略

iOS Simulator Limitation⚠

シミュレータでは動くけど、実機だとxxx

Page 21: ぼくのかんがえた iOSテスト戦略

コードを書いてから如何に

運用環境で

実機を使った受け入れテストを早く

実行できるかが勝負

Page 22: ぼくのかんがえた iOSテスト戦略

Always run on real devices

Page 23: ぼくのかんがえた iOSテスト戦略

継続的デリバリー

IterativeDevelopment

ContinuousIntegration

ContinuousDeploy

Continuous Delivery of Business Value

Page 24: ぼくのかんがえた iOSテスト戦略
Page 25: ぼくのかんがえた iOSテスト戦略

サイクルタイムを最小にコードの変更からリリースするまでどのくらいかかりますか

Page 26: ぼくのかんがえた iOSテスト戦略

Code

ReleaseBuild

Small Tests

Medium Tests

AcceptanceBuild

Runon Device

LargeTests

ikachan

pushpull code

push test results

request message(test results)

notify

Developer

Page 27: ぼくのかんがえた iOSテスト戦略

徹底的な自動化

Page 28: ぼくのかんがえた iOSテスト戦略

が、貧弱なテスティング・フレームワーク

が多い(特にUnit Test系)

なので自分は重視していない

Page 29: ぼくのかんがえた iOSテスト戦略
Page 30: ぼくのかんがえた iOSテスト戦略

•Easy maintenance

•Ruby

•Describe behavior of users

•Run on real devices (operate multi devices)

Why Frank?

Page 31: ぼくのかんがえた iOSテスト戦略
Page 32: ぼくのかんがえた iOSテスト戦略
Page 33: ぼくのかんがえた iOSテスト戦略

Test Server

端末ごとに異なる命令を出したい

Page 34: ぼくのかんがえた iOSテスト戦略

⚠当日はFrankを利用した

受け入れテストムービーを流しました

Page 35: ぼくのかんがえた iOSテスト戦略

Feature &

 Scenario

⚠省略

Page 36: ぼくのかんがえた iOSテスト戦略

Stepの部品化素人でもかけるテストを目指して

⚠省略

Page 37: ぼくのかんがえた iOSテスト戦略

要求

設計 (仕様)

実装 (&開発者テスト)

テスト (受け入れテスト)

受け入れテストは実装と共に安定化・高速化される

受け入れテストは

     お客様に提供する価値をベースに常に見直されていく

受け入れテスト仕様から

            詳細設計・実装を小さい単位で始める

Page 38: ぼくのかんがえた iOSテスト戦略

製品A 製品B自分が携わった

製品

開発期間

人数

Feature

受け入れテスト障害

遅れ

約2年 1年 5ヶ月

約30名 約15名 約10名

約70 約50 20

約60件 約200件 5件

1ヶ月 3ヶ月 なし

⚠値は参考値です

Page 39: ぼくのかんがえた iOSテスト戦略

実機を使った自動化テストでリリースに自信をもてる

Page 40: ぼくのかんがえた iOSテスト戦略

2013/3/18

ぼくのかんがえたiOSテスト戦略

ご清聴ありがとうございました