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
ソフトウェアテスト
Search
Takato Fukui
September 12, 2024
Programming
0
65
ソフトウェアテスト
社内でエンジニア以外にソフトウェアテストについて説明した時の資料
Takato Fukui
September 12, 2024
Tweet
Share
More Decks by Takato Fukui
See All by Takato Fukui
エンジニアリングの良い塩梅🧂🌸
takatofukui
0
25
dd-trace-goのtrace context propagation実装
takatofukui
0
450
なぜコードを書いてはいけないか
takatofukui
0
100
リファクタリング
takatofukui
0
120
本番分析データベースを丸ごと削除した人の顔
takatofukui
0
100
Other Decks in Programming
See All in Programming
Zendeskのチケットを Amazon Bedrockで 解析した
ryokosuge
2
200
CSC305 Summer Lecture 12
javiergs
PRO
0
130
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
250
Infer入門
riru
4
1.6k
為你自己學 Python - 冷知識篇
eddie
1
300
KessokuでDIでもgoroutineを活用する / Go Connect #6
mazrean
0
120
Oracle Database Technology Night 92 Database Connection control FAN-AC
oracle4engineer
PRO
1
320
オープンセミナー2025@広島LT技術ブログを続けるには
satoshi256kbyte
0
150
Portapad紹介プレゼンテーション
gotoumakakeru
1
130
AI OCR API on Lambdaを Datadogで可視化してみた
nealle
0
220
AIでLINEスタンプを作ってみた
eycjur
1
220
AIレビュアーをスケールさせるには / Scaling AI Reviewers
technuma
2
230
Featured
See All Featured
Making Projects Easy
brettharned
117
6.4k
Building Adaptive Systems
keathley
43
2.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Why Our Code Smells
bkeepers
PRO
339
57k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
How to Think Like a Performance Engineer
csswizardry
26
1.8k
Transcript
ソフトウェアテスト 福井 崇人
ソフトウェアテスト • 「コンピュータのプログラムから仕様にない振舞または欠陥(バグ)を見つけ出す作 業のこと」 (出典: Wikipedia「ソフトウェアテスト」) • ただ「プログラムテストは、バグの存在を示すことはできても、バグの不在を示すこ とはできない!」Edsger W.
Dijkstra プログラム バグ バグ テスト バグ テスト テスト バグ発見 バグ発見 バグなし
テストパターン • 例えば「振込金額が¥30,000以上の場合は手数料が¥500かかる」振込手数料計 算の場合 • 「¥40,000振り込むと振込手数料が¥500かかる」は普通のテスト • 他にも考慮するテストパターンがある ◦ 境界値
▪ 「¥30,000振り込むと振込手数料が ¥500かかる」 ▪ 「¥29,999振り込むと振込手数料がかからない」 ◦ 最大値 ▪ 「¥999,999,999振り込むと振込手数料が ¥500かかる」 ◦ ゼロ件 ▪ 「¥0振り込むと振込手数料がかからない」 ◦ イレギュラー ▪ (場合によっては小数点やマイナスの入力値も考慮する )
テストは手動/自動の2種類に分けられる 自動テストのこと エンジニアが こう言ったら... 手動テストのこと テスト流す 検証する 打鍵する 疎通確認する テスト通す
テスト落ちる テスト失敗する 目視確認する テスト走らせる テスト実行する テスト回す NG出る
自動テストは何をやってるか • ソフトウェアは本質的には入力を加工して出力する • 例えば「振込金額が¥30,000以上の場合は手数料が¥500かかる」振込手数料計 算の場合 振込手数料計算 ¥30,000 ¥500 ¥10,000
¥0 加工 入力 出力 入力に対して期待する出力が得られるかを コードで確認するのがテストコード
話は逸れ... • ソフトウェアは本質的には入力を加工して出力する • -> 大きな目で見ればWebサイトもそう 振込サイト ユーザー情報 (ユーザー残高含む) 振込サイトトップページ
データ(HTML) パスワード 振込サイトトップページ のURLパス
自動テストは何をやってるか • 具体的なテストコードを見てみると... • このテストコードを自動で実行するのが自動テスト • エンタープライズアプリケーションでは通常のコードの1~3倍のテストコードが書か れる
自動テストの実行タイミング • 基本的にコードをGitHubにアップロードする度に実行される ✅ ✅ ❌ 自動テストを入れていれば、「 ¥30,000->40,000 以上の場合は手数料が ¥500かかる」と手が滑っ
ても気付ける
テストコード/自動テストの良いところ • 中長期的に見てテストにかける時間が減る • デグレに気づきやすい • イレギュラーな入力値を簡単に用意できる ◦ 「商品画像0枚」を簡単に用意できる ◦
手動だと商品画像0枚の商品を探したりしないといけない • …
テストで考慮することは多い • ログインの自動テストはどうやるか • 現在為替を取得する外部APIを含むテストはどうやるか • データベースに書き込んだデータをどう検証するか • … •
ここまでのスライドのテストは仕様の話 • ピーク時の大量リクエストに耐えられるかのテスト • ハッカーに狙われても大丈夫かのテスト • サーバーが死んでも動き続けられるかのテスト • …
まとめ • バグのないプログラムはない • テストパターンは色々ある • 自動テストは然るべきタイミングで実行される • 自動テストは費用対効果が高い •
テストは奥が深い