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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
takato fukui
September 12, 2024
Programming
88
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ソフトウェアテスト
社内でエンジニア以外にソフトウェアテストについて説明した時の資料
takato fukui
September 12, 2024
More Decks by takato fukui
See All by takato fukui
関数の挙動書き換える
takatofukui
4
870
機関室の灯りは消えない
takatofukui
0
47
エンジニアリングの良い塩梅🧂🌸
takatofukui
0
74
dd-trace-goのtrace context propagation実装
takatofukui
0
560
なぜコードを書いてはいけないか
takatofukui
0
150
リファクタリング
takatofukui
0
150
本番分析データベースを丸ごと削除した人の顔
takatofukui
0
130
Other Decks in Programming
See All in Programming
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
880
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
6.7k
dRuby over BLE
makicamel
2
380
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
410
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
150
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
360
RTSPクライアントを自作してみた話
simotin13
0
610
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
160
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
11
5.8k
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
140
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
710
Claspは野良GASの夢をみるか
takter00
0
200
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Crafting Experiences
bethany
1
180
We Have a Design System, Now What?
morganepeng
55
8.2k
Un-Boring Meetings
codingconduct
0
320
Building the Perfect Custom Keyboard
takai
2
800
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
The SEO Collaboration Effect
kristinabergwall1
1
490
WCS-LA-2024
lcolladotor
0
650
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
Exploring anti-patterns in Rails
aemeredith
3
410
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を含むテストはどうやるか • データベースに書き込んだデータをどう検証するか • … •
ここまでのスライドのテストは仕様の話 • ピーク時の大量リクエストに耐えられるかのテスト • ハッカーに狙われても大丈夫かのテスト • サーバーが死んでも動き続けられるかのテスト • …
まとめ • バグのないプログラムはない • テストパターンは色々ある • 自動テストは然るべきタイミングで実行される • 自動テストは費用対効果が高い •
テストは奥が深い