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
software test
Search
fortkle
May 21, 2014
Programming
0
55
software test
fortkle
May 21, 2014
Tweet
Share
More Decks by fortkle
See All by fortkle
無駄な物をなるべく作らないリプレイス戦略 / replace-strategy-phperkaigi2021
fortkle
1
2.1k
フルリモート時代のカンバン運用 / kanban-operation-in-remote
fortkle
0
640
GitHub Actionsで始めるPHPアプリケーションのCI実践入門 / ga-phperkaigi2020
fortkle
3
4.2k
余裕を生み出すコードレビュー 〜レビュイー編〜 / code-review-phpcon-2019
fortkle
8
7k
「設計振り返り」を始めてみようと思っている話 / architecture reflection
fortkle
3
530
「ママ向けNo.1アプリ」の 更なる成長を支える仕組み / startup-engineer-night-connehito
fortkle
2
290
良いテストデータ、悪いテストデータ / testdata-antipattern
fortkle
4
6.7k
BackstopJSで始める CSSリグレッションテスト / backstopjs-css-test
fortkle
0
1.5k
PhpStorm導入アンチパターン / phpstorm-anti-pattern
fortkle
0
2k
Other Decks in Programming
See All in Programming
歴史と現在から考えるスケーラブルなソフトウェア開発のプラクティス
i10416
0
300
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
4
1.1k
ASP.NET Core の OpenAPIサポート
h455h1
0
120
PHPとAPI Platformで作る本格的なWeb APIアプリケーション(入門編) / phpcon 2024 Intro to API Platform
ttskch
0
390
Rubyでつくるパケットキャプチャツール
ydah
0
170
Lookerは可視化だけじゃない。UIコンポーネントもあるんだ!
ymd65536
1
130
Androidアプリの One Experience リリース
nein37
0
1.2k
Запуск 1С:УХ в крупном энтерпрайзе: мечта и реальность ПМа
lamodatech
0
950
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
240
ISUCON14感想戦で85万点まで頑張ってみた
ponyo877
1
590
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
770
선언형 UI에서의 상태관리
l2hyunwoo
0
270
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Building Adaptive Systems
keathley
38
2.4k
Facilitating Awesome Meetings
lara
51
6.2k
Visualization
eitanlees
146
15k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
960
Making Projects Easy
brettharned
116
6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.3k
Navigating Team Friction
lara
183
15k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.6k
How STYLIGHT went responsive
nonsquared
96
5.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
5
210
Transcript
テストのテ テストのテ - テスト初心者の僕がテストについて調べて分かったこと -
テストのテ 今日の発表で目指すところ • テストの流流れを理理解する • 基本的なテスト⽤用語についてはわかるよ うになる
テストのテ なぜテストについて調べたのか • テストが超重要なのは知っている • →ほとんどテストを書いたことがない • →なぜ書けないのか • →SIerに⽐比べてあまりテストをかかない
• →そもそもテストについてよくしらない • 調べた!!←イマココ
テストのテ やったこと • 本を読む – 『知識識ゼロから学ぶ ソフトウェアテスト』 – 『ソフトウェアエンジニアリングの新⼈人研修』 • WEBの記事を読み漁る – @IT連載
– @kyon_̲mm さんのブログ記事 – slideshare, SpeakerDeck • 上司に質問する
テストのテ 今日話すこと • テストの⽬目的について • テストの順序について – 開発の流流れ – テストの流流れ • テストの種類について
• テストの技法について • おわりに
テストのテ 何のためにテストをするのか(目的) • ソフトウェアテストの⽬目的は 1. エラー(バグ、⽋欠陥)を⾒見見つけ出す。 2. ソフトウェアの 品質 を保証する。
テストのテ 何のためにテストをするのか(目的) • ソフトウェアテストの⽬目的は 1. エラー(バグ、⽋欠陥)を⾒見見つけ出す。 2. ソフトウェアの 品質 を保証する。
テストのテ 何のためにテストをするのか(目的) • 1.エラー(バグ、⽋欠陥)を⾒見見つけ出す。 – プログラムを正しく動かすために。 – バグの早期発⾒見見により修正コストを減らす。 • 2.ソフトウェアの品質を保証する。 – 「プログラム品質」→ 仕様書通りか
– 「設計品質」→機能の改修や追加が簡単か
テストのテ 何のためにテストをするのか(目的) • 1.エラー(バグ、⽋欠陥)を⾒見見つけ出す。 • 2.ソフトウェアの品質を保証する。
テストのテ 何のためにテストをするのか(目的) • 1.エラー(バグ、⽋欠陥)を⾒見見つけ出す。 • 2.ソフトウェアの品質を保証する。 • 儲かる
テストのテ 何のためにテストをするのか(目的) • 1.エラー(バグ、⽋欠陥)を⾒見見つけ出す。 • 2.ソフトウェアの品質を保証する。 • 儲かる (→⾚赤字になるならテストは書かない)
テストのテ どのような流れでテストは行われるか (順序) • ソフトウェアテストの順序は 1. 単体テスト 2. 結合テスト 3.
システムテスト 4. 受け⼊入れテスト [選択肢] A. 受け⼊入れテスト B. 単体テスト C. システムテスト D. 結合テスト
テストのテ どのような流れでテストは行われるか (順序) • ソフトウェアテストの順序は 1. 単体テスト
B 2. 結合テスト D 3. システムテスト C 4. 受け⼊入れテスト A [選択肢] A. 受け⼊入れテスト B. 単体テスト C. システムテスト D. 結合テスト
テストのテ どのような流れでテストは行われるか (順序)
テストのテ どのような流れでテストは行われるか (順序) 顧客のやりたいことを 明確化する
テストのテ どのような流れでテストは行われるか (順序) 操作や画⾯面などの 基本的な部分の設計
テストのテ どのような流れでテストは行われるか (順序) 実装に必要な 細かい部分の設計
テストのテ どのような流れでテストは行われるか (順序) コードを書く
テストのテ どのような流れでテストは行われるか (順序) 実装が終わると 対象を⼤大きくしながら テストを進める。
テストのテ どのような流れでテストは行われるか (順序) • 各テストの段階のテスト対象は 単体テスト
→ 結合テスト → システムテスト → 受け⼊入れテスト → [選択肢] A. メソッド(関数) B. 複数モジュール C. 複合システム D. 納品物
テストのテ どのような流れでテストは行われるか (順序) • 各テストの段階のテスト対象は 単体テスト
→ A 結合テスト → B システムテスト → C 受け⼊入れテスト → D [選択肢] A. メソッド(関数) B. 複数モジュール C. 複合システム D. 納品物
テストのテ どのような流れでテストは行われるか (順序) • 単体テスト → メソッド(関数) – 実際の開発では、xUnit系ツールを使う。 – メソッド単位で⾏行行うテスト – メソッドに値を渡し、期待した結果が
返ってくるか確かめる function getMemberAge($id) { $age = $service->getAge($id) return $age; }
テストのテ どのような流れでテストは行われるか (順序) • 結合テスト → 複数のモジュール(メソッド) – 実際の開発では、rspec等のツールを使う。 – 正しくメソッドが結合されているか確かめる
テストのテ どのような流れでテストは行われるか (順序) • システムテスト → 複合システム – 仕様通りに正しく動くかどうか確かめる – 機能だけでなく、パフォーマンスやセキュリ ティなども確かめる
システム
テストのテ どのような流れでテストは行われるか (順序) • 受け⼊入れテスト → 納品物(システム) – テストをするのが発注者(客) – 要望通りの物が納品されたかどうか確認する 納品物
テストのテ どのようなテストがあるのか (種類) • テストの種類は⼤大きく分けて2つある – 機能テスト • ソフトウェアの機能や振る舞いを確かめる – ⾮非機能テスト •
機能以外にも性能や特性などを確かめる
テストのテ • 右の中で⾮非機能 テストに⼊入るのは 単体 [選択肢] A. 負荷テスト B.
ユニットテスト C. インテグレー ションテスト D. パフォーマンス テスト E. セキュリティテ スト どのようなテストがあるのか (種類)
テストのテ • 右の中で⾮非機能 テストに⼊入るのは A.負荷テスト D.パフォーマンステスト E.セキュリティテスト [選択肢] A.
負荷テスト B. ユニットテスト C. インテグレー ションテスト D. パフォーマンス テスト E. セキュリティテ スト どのようなテストがあるのか (種類)
テストのテ どのようなテストがあるのか (種類) • 負荷テスト – 短時間に⾼高い負荷をかけても正常に動作するか テストする • パフォーマンステスト
– 処理理能⼒力力や応答時間などが仕様通りかテストす る • セキュリティテスト – 「悪意のある攻撃」に対し対処できるかテスト する。(この分野は未だテスト⼿手法がない)
テストのテ どうやってテストケースを考えるか(技法) • 演習問題 – 次のプログラムについて、テストケースを 考えて下さい。 • 内容:⼊入⼒力力した三⾓角形の種類を答えるプログラム • 答えるパターン:正三⾓角形、⼆二等辺三⾓角形、普
通の三⾓角形 • 条件:1〜~10の整数のみ受け付ける。 – ※書いていない部分は勝⼿手に想像してOK
テストのテ どうやってテストケースを考えるか(技法) • 答え合わせ lv.1 – 正常系:表⽰示結果確認 • 3辺が同じ⻑⾧長さで「正三⾓角形」と表⽰示 • 2辺のみが同じ⻑⾧長さで「⼆二等辺三⾓角形」と表⽰示
– 3通り実施(5-‐‑‒5-‐‑‒3, 5-‐‑‒3-‐‑‒5, 3-‐‑‒5-‐‑‒5) • 3辺とも違う⻑⾧長さで「普通の三⾓角形」と表⽰示
テストのテ どうやってテストケースを考えるか(技法) • 答え合わせ lv.2 – 異異常系:⼊入⼒力力形式の異異常 • 数値以外の⼊入⼒力力 • 2辺のみ⼊入⼒力力(4辺のみ⼊入⼒力力)
– 異異常系:⼊入⼒力力値の異異常 • それぞれに0を⼊入⼒力力 • それぞれに負の数を⼊入⼒力力 • それぞれに条件より⼤大きい数を⼊入⼒力力
テストのテ どうやってテストケースを考えるか(技法) • 答え合わせ lv.3 – 異異常系:三⾓角形にならない • 2辺の和=残りの1辺 – Ex.)
2,3,5 → 平⾏行行線になる • 2辺の和<残りの1辺 – Ex.) 2,4,8 → 届かない
テストのテ どうやってテストケースを考えるか(技法) • 全部を⼊入⼒力力するわけにはいかない – 10×10×10=1000通り は無理理... • バグのありそうな所を漏漏れなくダブり無 くテストするのがベター。 •
テスト技法について知っておくと便便利利。
テストのテ どうやってテストケースを考えるか(技法) • 同値分割 – 「仕様からデータを“意味のあるグルー プ”(同値クラス)に分類し,各グループか ら代表値を選ぶ⼿手法」
テストのテ どうやってテストケースを考えるか(技法) • 境界値分析 – 「同値クラスの間の境界の値(境界値)を テストデータとして選択する⼿手法」
テストのテ どうやってテストケースを考えるか(技法) • 他にもいろいろ – デシジョンテーブル – 原因結果グラフ →
詳しくは
テストのテ おわりに • まだ調べきれていないこと – アジャイル開発における品質を担保した最 適なテストプランの作り⽅方 – アジャイルテストにおけるTDD,BDDの実践 ⽅方法 • 狩⾕谷さんのwiki読む(『継続的デリバリー』)
• 『実践テスト駆動開発』を読む • 『ドメイン駆動設計』を読む • アプリケーション設計(OOP,デザインパターン)
テストのテ おわり