SlideShare a Scribd company logo
@ktanaka117

ダンボー⽥中
俺コン Day2 Track A 20:40 〜
Swiftで

聞いておぼえるテスト書き
⾃⼰紹介
• ダンボー⽥中/ktanaka117
• 百合好きのダンボールの⼈
• テスト、設計、リファクタリング

がホットワード
• 「愛してる」を知りたいのです。
もくじ
• 対象聴衆
• トークの⽬的
• 想定外に⽬を向ける
• むかしばなし
• 単体テストはロジックに
• ライヴコーディング
• FAQ
対象聴衆
• テストってなに?と思う⽅
• テストをどう書き始めるべきか悩む⽅
• テスト初⼼者の⽅
• テスト経験者の⽅


Swiftで聞いておぼえるテスト書き
「エンジニアは想定外を考える仕事だよ」
by ⽗(ソフトウェアエンジニア)


Swiftで聞いておぼえるテスト書き
⼩学⽣Danbo-Tanaka


幼い頃からPCゲームをたしなむ⼦供がおりました。
基本プレイ無料のオンラインPCゲームが流⾏りだした頃。
その頃は⾃分⽤のPCを持っておらず、

Adminである⽗親が管理する家族共⽤PCがあるのみでした。
⼩学⽣Danbo-Tanaka
権限を持たない⼩学⽣は、インストールするソフトウェアや

サービスの安全性をAdminに説明する必要がありました。
Admin ⽗


権限を持たない⼩学⽣は、インストールするソフトウェアや

サービスの安全性をAdminに説明する必要がありました。
Admin ⽗




家族に迷惑をかける可能性がある部分=

ウイルスなどソフトウェアの信頼性やお⾦の話、

住所や電話番号などのプライバシーに関わる情報の取り扱い
⼈権を求めて、ゲームの利⽤規約を読み漁る。
• 「基本プレイ無料」

→有料になるのはどういうとき?

→有料になったらいくらかかるの?
• 「退会後、半年はユーザーの情報を保持します」

→退会しなかったらどうなる?

→半年が経過したらユーザー情報はどう破棄される?
⼈権を求めて、ゲームの利⽤規約を読み漁る。
• 「基本プレイ無料」

→有料になるのはどういうとき?

→有料になったらいくらかかるの?
• 「退会後、半年はユーザーの情報を保持します」

→退会しなかったらどうなる?

→半年が経過したらユーザー情報はどう破棄される?


⽇常⽣活にも潜むテストケース
• 地震が起きたら?

→この机の下に隠れたら⽣き残れそう

→家に備蓄品が⾜りないので、死ぬしかない
• 登壇直前に⾵邪をひいたら?

→仲間に連絡してキャンセルする

→全⼒で治して翌⽇の空き時間に登壇する


テストの書き⽅
• 「この条件で」
• 「この操作をしたら」
• 「この結果になること」
仕様を明確に理解すること
定まっていない仕様を決めること
仕様を明確に理解すること
定まっていない仕様を決めること


まとめ:テストを書くには
• 仕様を明確にする
• 定まっていない仕様を決める
• 正常系以外の、想定外に⽬を向ける

もしものときにどうするか考えておく
Swiftで聞いておぼえるテスト書き
テストの書き⽅
• もしもの時にどうするか=条件分岐


Swiftで聞いておぼえるテスト書き
Q. なんで⾃動テストを書く必要があるの?
A. ⼿動テストが⾯倒だから
なにか変更を加えたとき、

既存の実装を壊していないか確認する必要がある。

全ての「もしも」を⼿動ですべて確認できますか?
Q. どこからテストを書くべき?
A. 慣れた⼈は、重要な箇所から。 

初⼼者の⼈は、⼊れられそうなところから。
テストにもメンテナンスコストが発⽣します。

アプリにとってクリティカルなところから優先的に⼊れるべきですが、

初⼼者は⼊れられるところから⼊れるで良いと思っています。
Q. どれくらいまでテストケースを考えるべき?
A. 不安を解消できるところまで。
開発を進めるのに、⾃信を持って開発を進められるところまで。

開発をするエンジニアが探索的テストまで担保する必要はないと思う。
参考
どうやってテストケースを

考えれば良いか

(テスト設計)
参考
どうやってテストを書いていくか
参考
Swiftではどう書くか
宣伝
iOSDC Reject Confも登壇します。



OSSにテストを⼊れていく話と

ライヴコーディングします。
Swiftで聞いておぼえるテスト書き
⽥中賢治
GitHub: ktanaka117
Twitter: @ktanaka117

More Related Content

PDF
第1回 プログラマのための計算機科学
PDF
はじめてのテスト技法
PDF
ApiとE2Eテスト #entapihack
PPTX
Addressables で大量のリソース管理・困りどころと解消法
PDF
言語処理100本ノック紹介
PDF
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
PDF
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
PDF
ポストモーテムやってみた #yjbonfire
第1回 プログラマのための計算機科学
はじめてのテスト技法
ApiとE2Eテスト #entapihack
Addressables で大量のリソース管理・困りどころと解消法
言語処理100本ノック紹介
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
ポストモーテムやってみた #yjbonfire

More from Kenji Tanaka (20)

PDF
2つの同期 4つの状態 #pixiv_ios_arch
PDF
2つの同期 4つの状態 #app_mp
PDF
2つの同期 4つの状態 #roppongiswift
PDF
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
PDF
よく使うテストヘルパーの紹介 #ios_test_night
PDF
設計時空のリファクタリング
PDF
WACATE 2018 Summer
PDF
テスト駆動開発入門 by Swift
PDF
An iOS Engineer challenges Web.
PDF
エンジニアのためのブログ講座Ver4
PDF
TDDやってみよ
PDF
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
PDF
節子、それViewControllerやない...、FatViewControllerや...。
PDF
iOS 11からのDeviceCheck #とは
PDF
設計に答えはないから探してみよう
PDF
iOS 11からのアプリ間ファイル共有
PDF
iOS 11からのアプリ間ファイル共有_公開用
PDF
参加者と振り返るWWDC17 公開用
PDF
WWWDCの振り返りを始めるために
PDF
Stubる - Mockingjayを使ったHTTPクライアントのテスト -
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #roppongiswift
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
よく使うテストヘルパーの紹介 #ios_test_night
設計時空のリファクタリング
WACATE 2018 Summer
テスト駆動開発入門 by Swift
An iOS Engineer challenges Web.
エンジニアのためのブログ講座Ver4
TDDやってみよ
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
節子、それViewControllerやない...、FatViewControllerや...。
iOS 11からのDeviceCheck #とは
設計に答えはないから探してみよう
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有_公開用
参加者と振り返るWWDC17 公開用
WWWDCの振り返りを始めるために
Stubる - Mockingjayを使ったHTTPクライアントのテスト -
Ad

Swiftで聞いておぼえるテスト書き