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

software test

software test

F4d37a67ce86b2f962c79d73a9127d3c?s=128

fortkle

May 21, 2014
Tweet

Transcript

  1. テストのテ テストのテ - テスト初心者の僕がテストについて調べて分かったこと  -

  2. テストのテ 今日の発表で目指すところ •  テストの流流れを理理解する •  基本的なテスト⽤用語についてはわかるよ うになる

  3. テストのテ なぜテストについて調べたのか •  テストが超重要なのは知っている •  →ほとんどテストを書いたことがない •  →なぜ書けないのか •  →SIerに⽐比べてあまりテストをかかない

    •  →そもそもテストについてよくしらない •  調べた!!←イマココ
  4. テストのテ やったこと •  本を読む – 『知識識ゼロから学ぶ  ソフトウェアテスト』 – 『ソフトウェアエンジニアリングの新⼈人研修』 •  WEBの記事を読み漁る – @IT連載

    – @kyon_̲mm  さんのブログ記事 – slideshare,  SpeakerDeck •  上司に質問する
  5. テストのテ 今日話すこと •  テストの⽬目的について •  テストの順序について – 開発の流流れ – テストの流流れ •  テストの種類について

    •  テストの技法について •  おわりに
  6. テストのテ 何のためにテストをするのか(目的)  •  ソフトウェアテストの⽬目的は  1.  エラー(バグ、⽋欠陥)を⾒見見つけ出す。  2.  ソフトウェアの  品質  を保証する。        

  7. テストのテ 何のためにテストをするのか(目的)  •  ソフトウェアテストの⽬目的は  1.  エラー(バグ、⽋欠陥)を⾒見見つけ出す。  2.  ソフトウェアの  品質  を保証する。        

  8. テストのテ 何のためにテストをするのか(目的)  •  1.エラー(バグ、⽋欠陥)を⾒見見つけ出す。 – プログラムを正しく動かすために。 – バグの早期発⾒見見により修正コストを減らす。 •  2.ソフトウェアの品質を保証する。 – 「プログラム品質」→  仕様書通りか

    – 「設計品質」→機能の改修や追加が簡単か
  9. テストのテ 何のためにテストをするのか(目的)  •  1.エラー(バグ、⽋欠陥)を⾒見見つけ出す。 •  2.ソフトウェアの品質を保証する。

  10. テストのテ 何のためにテストをするのか(目的)  •  1.エラー(バグ、⽋欠陥)を⾒見見つけ出す。 •  2.ソフトウェアの品質を保証する。 •  儲かる

  11. テストのテ 何のためにテストをするのか(目的)  •  1.エラー(バグ、⽋欠陥)を⾒見見つけ出す。 •  2.ソフトウェアの品質を保証する。 •  儲かる (→⾚赤字になるならテストは書かない)

  12. テストのテ どのような流れでテストは行われるか  (順序)  •  ソフトウェアテストの順序は  1.  単体テスト  2.  結合テスト  3.

     システムテスト  4.  受け⼊入れテスト                 [選択肢] A.  受け⼊入れテスト B.  単体テスト C.  システムテスト D.  結合テスト
  13. テストのテ どのような流れでテストは行われるか  (順序)  •  ソフトウェアテストの順序は  1.  単体テスト      

          B  2.  結合テスト             D  3.  システムテスト C  4.  受け⼊入れテスト A             [選択肢] A.  受け⼊入れテスト B.  単体テスト C.  システムテスト D.  結合テスト
  14. テストのテ どのような流れでテストは行われるか  (順序)              

  15. テストのテ どのような流れでテストは行われるか  (順序)               顧客のやりたいことを 明確化する

  16. テストのテ どのような流れでテストは行われるか  (順序)               操作や画⾯面などの 基本的な部分の設計

  17. テストのテ どのような流れでテストは行われるか  (順序)               実装に必要な 細かい部分の設計

  18. テストのテ どのような流れでテストは行われるか  (順序)               コードを書く

  19. テストのテ どのような流れでテストは行われるか  (順序)               実装が終わると 対象を⼤大きくしながら テストを進める。

  20. テストのテ どのような流れでテストは行われるか  (順序)  •  各テストの段階のテスト対象は 単体テスト        

         → 結合テスト              → システムテスト  → 受け⼊入れテスト  →             [選択肢] A.  メソッド(関数) B.  複数モジュール C.  複合システム D.  納品物
  21. テストのテ どのような流れでテストは行われるか  (順序)  •  各テストの段階のテスト対象は 単体テスト        

         →      A 結合テスト              →      B システムテスト  →      C 受け⼊入れテスト  →      D         [選択肢] A.  メソッド(関数) B.  複数モジュール C.  複合システム D.  納品物
  22. テストのテ どのような流れでテストは行われるか  (順序)  •  単体テスト  →  メソッド(関数) – 実際の開発では、xUnit系ツールを使う。 – メソッド単位で⾏行行うテスト – メソッドに値を渡し、期待した結果が

       返ってくるか確かめる function getMemberAge($id) { $age = $service->getAge($id) return $age; }
  23. テストのテ どのような流れでテストは行われるか  (順序)  •  結合テスト  →  複数のモジュール(メソッド) – 実際の開発では、rspec等のツールを使う。 – 正しくメソッドが結合されているか確かめる

  24. テストのテ どのような流れでテストは行われるか  (順序)  •  システムテスト  →  複合システム – 仕様通りに正しく動くかどうか確かめる – 機能だけでなく、パフォーマンスやセキュリ ティなども確かめる

    システム
  25. テストのテ どのような流れでテストは行われるか  (順序)  •  受け⼊入れテスト  →  納品物(システム) – テストをするのが発注者(客) – 要望通りの物が納品されたかどうか確認する 納品物

  26. テストのテ どのようなテストがあるのか  (種類)  •  テストの種類は⼤大きく分けて2つある – 機能テスト •  ソフトウェアの機能や振る舞いを確かめる – ⾮非機能テスト • 

    機能以外にも性能や特性などを確かめる
  27. テストのテ •  右の中で⾮非機能    テストに⼊入るのは 単体             [選択肢] A.  負荷テスト B. 

    ユニットテスト C.  インテグレー ションテスト D.  パフォーマンス テスト E.  セキュリティテ スト どのようなテストがあるのか  (種類) 
  28. テストのテ •  右の中で⾮非機能    テストに⼊入るのは  A.負荷テスト  D.パフォーマンステスト  E.セキュリティテスト             [選択肢] A. 

    負荷テスト B.  ユニットテスト C.  インテグレー ションテスト D.  パフォーマンス テスト E.  セキュリティテ スト どのようなテストがあるのか  (種類) 
  29. テストのテ どのようなテストがあるのか  (種類)  •  負荷テスト –  短時間に⾼高い負荷をかけても正常に動作するか テストする •  パフォーマンステスト

    –  処理理能⼒力力や応答時間などが仕様通りかテストす る •  セキュリティテスト –  「悪意のある攻撃」に対し対処できるかテスト する。(この分野は未だテスト⼿手法がない)
  30. テストのテ どうやってテストケースを考えるか(技法) •  演習問題 – 次のプログラムについて、テストケースを 考えて下さい。 •  内容:⼊入⼒力力した三⾓角形の種類を答えるプログラム •  答えるパターン:正三⾓角形、⼆二等辺三⾓角形、普

    通の三⾓角形 •  条件:1〜~10の整数のみ受け付ける。 – ※書いていない部分は勝⼿手に想像してOK
  31. テストのテ どうやってテストケースを考えるか(技法) •  答え合わせ  lv.1 – 正常系:表⽰示結果確認 •  3辺が同じ⻑⾧長さで「正三⾓角形」と表⽰示 •  2辺のみが同じ⻑⾧長さで「⼆二等辺三⾓角形」と表⽰示

    –  3通り実施(5-‐‑‒5-‐‑‒3,  5-‐‑‒3-‐‑‒5,  3-‐‑‒5-‐‑‒5) •  3辺とも違う⻑⾧長さで「普通の三⾓角形」と表⽰示
  32. テストのテ どうやってテストケースを考えるか(技法) •  答え合わせ  lv.2 – 異異常系:⼊入⼒力力形式の異異常 •  数値以外の⼊入⼒力力 •  2辺のみ⼊入⼒力力(4辺のみ⼊入⼒力力)

    – 異異常系:⼊入⼒力力値の異異常 •  それぞれに0を⼊入⼒力力 •  それぞれに負の数を⼊入⼒力力 •  それぞれに条件より⼤大きい数を⼊入⼒力力
  33. テストのテ どうやってテストケースを考えるか(技法) •  答え合わせ  lv.3 – 異異常系:三⾓角形にならない •  2辺の和=残りの1辺 –  Ex.)

     2,3,5    →  平⾏行行線になる •  2辺の和<残りの1辺 –  Ex.)  2,4,8  →  届かない
  34. テストのテ どうやってテストケースを考えるか(技法) •  全部を⼊入⼒力力するわけにはいかない – 10×10×10=1000通り  は無理理... •  バグのありそうな所を漏漏れなくダブり無 くテストするのがベター。 • 

    テスト技法について知っておくと便便利利。
  35. テストのテ どうやってテストケースを考えるか(技法) •  同値分割 – 「仕様からデータを“意味のあるグルー プ”(同値クラス)に分類し,各グループか ら代表値を選ぶ⼿手法」

  36. テストのテ どうやってテストケースを考えるか(技法) •  境界値分析 – 「同値クラスの間の境界の値(境界値)を テストデータとして選択する⼿手法」

  37. テストのテ どうやってテストケースを考えるか(技法) •  他にもいろいろ – デシジョンテーブル – 原因結果グラフ      →  

     詳しくは
  38. テストのテ おわりに •  まだ調べきれていないこと – アジャイル開発における品質を担保した最 適なテストプランの作り⽅方 – アジャイルテストにおけるTDD,BDDの実践 ⽅方法 •  狩⾕谷さんのwiki読む(『継続的デリバリー』)

    •  『実践テスト駆動開発』を読む •  『ドメイン駆動設計』を読む •  アプリケーション設計(OOP,デザインパターン)  
  39. テストのテ おわり