$30 off During Our Annual Pro Sale. View Details »

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

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