Upgrade to Pro — share decks privately, control downloads, hide ads and more …

はじめてのソフトウェアテスト

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for blau blau
March 23, 2023

 はじめてのソフトウェアテスト

勉強会での登壇資料です。

Avatar for blau

blau

March 23, 2023
Tweet

Other Decks in Programming

Transcript

  1. 自己紹介 • @le-blau • 1年目:EC開発会社でQA ◦ セキュリティ・品質の改善活動 • 2年目〜:現職 ◦

    結婚相談所システムの開発 ◦ 公式サイト・LPの開発 • 趣味:植物🌿 料理🍳 ゲーム🎮
  2. 目次 • ソフトウェアテストを学ぶ理由 ◦ ソフトウェアテストとは? ◦ ソフトウェア7原則 • テスト技法 ◦

    同値分割法・境界値分析 ◦ デシジョンテーブル ◦ ペア構成テスト ◦ 状態遷移テスト • おまけ(時間が余ったら)
  3. 目次 • ソフトウェアテストを学ぶ理由 👈 ◦ ソフトウェアテストとは? ◦ ソフトウェア7原則 • テスト技法 ◦

    同値分割法・境界値分析 ◦ デシジョンテーブル ◦ ペア構成テスト ◦ 状態遷移テスト • おまけ(時間が余ったら)
  4. テストの7原則 1. テストは欠陥があることは示せるが、欠陥がないことは示せない 2. 全数テストは不可能 3. 早期テストで時間とコストを節約 4. 欠陥の偏在 5.

    殺虫剤のパラドックスにご用心 6. テストは状況次第 7. 「バグゼロ」の落とし穴 引用元:テスト技術者資格制度 Foundation Level シラバス 日本語版
  5. 解答例 正常系 • 有効な正三角形 •  〃 不等辺三角形 •  〃 二等辺三角形 •  〃 二等辺三角形で、

    3種類の辺の組み合 わせをテスト ◦ [A=B], [B=C], [C=A] 異常系 • 長さが 0 の辺があるケース ◦ [A=0], [B=0], [C=0], [AとB=0], … • 長さが負の値の辺があるケース ◦ [A=-2, B=2, C=5], [A=-2, B=-3, C=5], … • 2辺の和がもう1辺と同じ • 2辺の和がもう1辺より小さい・大きい • 3辺が 0 のケース • 入力の個数が間違っている • 入力値に対して表示結果があっている                  など
  6. 目次 • ソフトウェアテストを学ぶ理由 ◦ ソフトウェアテストとは? ◦ ソフトウェア7原則 • テスト技法 👈 ◦

    同値分割法・境界値分析 ◦ デシジョンテーブル ◦ ペア構成テスト ◦ 状態遷移テスト • おまけ(時間が余ったら)
  7. 同値クラス・境界値テスト 以下のようなコードがあったとき、必要なテストケースは? if (age <= 12) { 子供料金 } else

    if ( age <= 60 ){ 大人料金 } else { シニア料金 } ケースA→ age=0、age=1、age=2 ケースB→ age=3、age=40、age=63 ケースAは、子供料金しかテストしていない ケースBは、全ての結果をテストできてる 結果が同じになる条件の範囲を「同値クラス」という
  8. 同値クラス・境界値テスト if (age <= 12) { 子供料金 } ↑のように書きたかったのに、不等号を間違えてしまったケース if

    (age < 12) { 子供料金 } →境界値にはバグが潜みやすい これをカバーするためには同値クラスの境界とその前後の値を調べれば良い このような考え方を「境界値テスト」という
  9. 直交表 条件をさらに増やしてみる 例:3値条件が4つ(A, B, C, D) 全網羅のテストケース数:3^4 = 81通り 直交表のテストケース数:9通り

    このように、直交表を使えばすべてのペアを 少ないテストケースで網羅できる A B C D 1 0 0 0 0 2 0 1 1 1 3 0 2 2 2 4 1 0 1 2 5 1 1 2 0 6 1 2 0 1 7 2 0 2 1 8 2 1 0 2 9 2 2 1 0
  10. 直交表を実際に使ってみる 条件例 • ブラウザ(Chrome, Firefox) • OS(Windows, MacOS, Linux) •

    サーバー(Apache, IIS, WebLogic) • データベース(MySQL, PostgreSQL, SQL Server) これを直交表に当てはめるには、2値条件が1つ、3値条件が3つの直交表を選べば良い 直交表の表記で表すと「L?(2^1 3^3)」となるので、これにマッチする直交表を選ぶ
  11. 直交表を実際に使ってみる L9(3^4)の直交表 空欄ができた場合は、任意の値で埋める(今回だとブラウザの3) 任意の値で埋めたとしても、すでにペアは登場しているので問題ない 
 1
 2
 3
 4
 1


    1
 1
 1
 1
 2
 1
 2
 2
 2
 3
 1
 3
 3
 3
 4
 2
 1
 2
 3
 5
 2
 2
 3
 1
 6
 2
 3
 1
 2
 7
 3
 1
 3
 2
 8
 3
 2
 1
 3
 9
 3
 3
 2
 1
 
 ブラウザ
 OS
 サーバー
 データベース 
 1
 Chrome
 Win
 Apache
 MySQL
 2
 Chrome
 Mac
 IIS
 PostgreSQL 
 3
 Chrome
 Linux
 WebLogic
 SQL Server 
 4
 Firefox
 Win
 IIS
 SQL Server 
 5
 Firefox
 Mac
 WebLogic
 MySQL
 6
 Firefox
 Linux
 Apache
 PostgreSQL 
 7
 3
 Win
 WebLogic
 PostgreSQL 
 8
 3
 Mac
 Apache
 SQL Server 
 9
 3
 Linux
 IIS
 MySQL
 条件を当てはめる ・ブラウザ(Chrome, Firefox) ・OS(Windows, MacOS, Linux) ・サーバー( Apache, IIS, WebLogic) ・データベース (MySQL, PostgreSQL, SQL Server)
  12. 直交表を実際に使ってみる 最終的に行がテストケースになり、すべてのペアをテストすることができる 今回は9つのケースをテストすれば良い 
 ブラウザ
 OS
 サーバー
 データベース 
 1


    Chrome
 Win
 Apache
 MySQL
 2
 Chrome
 Mac
 IIS
 PostgreSQL 
 3
 Chrome
 Linux
 WebLogic
 SQL Server 
 4
 Firefox
 Win
 IIS
 SQL Server 
 5
 Firefox
 Mac
 WebLogic
 MySQL
 6
 Firefox
 Linux
 Apache
 PostgreSQL 
 7
 Chrome
 Win
 WebLogic
 PostgreSQL 
 8
 Chrome
 Mac
 Apache
 SQL Server 
 9
 Firefox
 Linux
 IIS
 MySQL