Skip to content

Instantly share code, notes, and snippets.

@kakari2
Last active February 1, 2016 16:17
Show Gist options
  • Select an option

  • Save kakari2/81bfc529bcf67ee44452 to your computer and use it in GitHub Desktop.

Select an option

Save kakari2/81bfc529bcf67ee44452 to your computer and use it in GitHub Desktop.
ソフトウェアテストWorkshop 2016/1/21

ソフトウェアテストWorkshop

  • 2016/01/21

今回の話

  • システム保守ってしんどい
  • テストってしんどい
  • テスト設計って大事

お前誰よ?

  • 経歴
  • 新大阪, SI
  • 言語 : Ruby, PHP
  • 前職
    • 入社から2年半、テスト専門チームでテスト担当者
  • 現職
    • 入社から3か月、先輩の作ったWEBシステムをテスト

システムの開発って大変ですよね?

  • なんか地味
  • ○○システムを新規開発しました!
  • 新規開発10人月!
  • 保守開発20日

→ モチベーション下がる

  • ソースコードが汚い
  • ドキュメントが古い(実態と合ってない)

→ モチベーション下が

  • 手元のPCではデバッグできない
  • なぜか本番では動作しない
  • 機能追加のつもりがバグ修正になってる
  • 当然、自動テストなど無い

→ モチベーション下がる

  • 手元のPCではデバッグできない
  • なぜか本番では動作しない
  • 機能追加のつもりがバグ修正になってる
  • 当然、自動テストなど無い

→ モチベーション下がる

保守開発の負のスパイラル

  • コードが理解できない
  • コードをコピペ
  • リリース後不具合発生
  • やっつけで修正する
  • さらにコードが汚くなる

→モチベーション下がる

レガシーコード改善のススメ より

技術的負債

  • Technical debt (1992 Ward Cunningham)
  • もしくは、レガシーコード
  • いつかは返さないといけない負債

なぜ技術的負債が発生するのか

  • 技術不足
  • 知識不足
  • 納期のプレッシャー

そんな現場で闘っていくには 1

  • きれいなコードを書く
  • 技術
  • 適切なツールを適切に使う
  • 知識
  • 先人の敷いたレールの上をルールを守って走る

そんな現場で闘っていくには 2

  • テスト技術

  • テスト設計

  • テスト技法

  • 自動テスト

  • プロセス改善

  • 正しく作っているか?に加えて、正しく作られているか?を確認する

  • テスト自動化が流行ってるけど、分析と設計が大事

  • 自動化する部分はどこか?どこから手動でやるか?

ソフトウェアテストとは? 1

  • 同値分割?境界値?

テストとは、エラーをみつけるつもりでプログラムを実行する過程である

ソフトウェア・テストの技法 Myers 1979 (The Art of Software Testing)

  • 「デバッグ」とは何が違うか?
  • デバッグは不具合の修正を行うこと
  • テストしてもデバッグしなければ品質が上がらない

ソフトウェアテストとは? 2

テスト担当者の精神面による区分

レベル4 テストは行動ではない。大げさなテストをすることなく品質の高いソフトウェアを作るための精神的な訓練である。
レベル3 テストの目的は、何かを証明することではなく、プログラムが動かないことによって発生する危険性をある許容範囲までに減らすことである。
レベル2 テストの目的は、ソフトウェアが動かないということを示すことにある。
レベル1 テストの目的は、ソフトウェアが動くことを示すことである。
レベル0 テストとデバッグには何の差もない。デバッグ以外にはテストには特別な目的はない

(「ソフトウェアテスト技法」 ボーリス・バイザー 1990)

西 康晴先生(電気通信大学)いうところの「テスト道」

品質とは?

  • 「品質が良い」ってどういうこと?
  • バグが少ないこと?
  • 品質とは
  • 誰かにとっての価値(ワインバーグのシステム思考法)
  • 出荷後に社会に与える影響(品質工学)
  • 備わっている特性が要求を満たす度合い(ISO9000)

テストができるようになるためには、何を勉強する必要があるか?

  • テストができるようになるためには、何を勉強する必要があるか?

マーケティング的側面

REBOK 要求工学の知識体系
BABOK ビジネス分析の知識体系
BABOK ビジネス分析の知識体系

工学的側面

SWEBOK ソフトウェア工学の知識体系
SQuBOK ソフトウェア品質知識体系
ISTQB/JSTQB ソフトウェアテスト技術者資格認定

マーケティング/工学のバランスを取る

PMBOK プロジェクトマネジメント知識体系

(例) SWEBOKの大見出し

| | | |:-----------:|:------------|:-----------:|:------------| | 1 | ソフトウェア要求 | 9 | ソフトウェアエンジニアリングモデル及び方法 | | 2 | ソフトウェア設計 | 10 | ソフトウェア品質 | | 3 | ソフトウェア構築 | 11 | ソフトウェアエンジニアリング専門技術者実践規律 | | 4 | ソフトウェアテスティング | 12 | ソフトウェア・エンジニアリング経済学 | | 5 | ソフトウェア保守 | 13 | 計算基礎 | | 6 | ソフトウェア構成管理 | 14 | 数学基礎 | | 7 | ソフトウェアエンジニアリング・マネージメント | 15 | エンジニアリング | | 8 | ソフトウェアエンジニアリングプロセス | | |

セキュリティ

セキュリティに関しては特殊な勉強が必要

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

テストができるようになるためには、何を勉強する必要があるか?(再掲)

  • 正直しんどい
  • テスト技術者に必要な知識は、実は○○エンジニアの中でも特に幅広い
  • コンピュータ科学・ソフトウェア工学を前提とした柔軟な発想がテスト技術者の真骨頂

最低限知っておくべきこと

  • ソフトウェアは腐らない?
  • いいえ、腐るし壊れます

ソフトウェアテストの7原則(ISTQB)

  • 「テストは欠陥があることしか示せない」
  • 「全数テストは不可能」
  • 「初期テスト」
  • 「欠陥の偏在」
  • 「殺虫剤のパラドックス」
  • 「テストは条件次第」
  • 「バグゼロ」の落とし穴」

テスト設計の最初の一歩

「マインドマップではじめるソフトウェアテスト」

マインドマップを書いてみる

プロダクトに品質モデルを適用する

  • 品質のモデル化/体系化
  • ISO9000
  • ISO9126
  • ISO250xx (SQuaRE)
  • ISO29119
  • RASIS
  • FURPS+

テストエンジニアはどんなことを考えてるのか?

  • バグを発見するのではなく、予想している
  • 「あの人(チーム)ならこんな風に作ってるかも」
  • 「そもそもどのように作られるべきなのか」を追求している
  • Excelに書かれたテスト仕様書に○をつけるのはテストのほんの一部でしかない。
  • 不具合の見つからない○ばかり並んでいるテスト仕様書は、品質の低いテスト仕様書である

おすすめ入門書

基本から学ぶソフトウェアテスト

ソフトウェアテスト教科書 JSTQB Foundation 第3版

テスト駆動開発入門

システムテスト自動化 標準ガイド

→これくらいは基本書籍として押さえておいてやっと入門者

リーダブルコード

レガシーコード改善ガイド

新装版 リファクタリング―既存のコードを安全に改善する

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド

チーム開発の教科書 C#によるモダンな開発を実 践しよう!

→開発やってる会社だと新入社員に読ませるテキスト

もっと簡単な本は

ソフトウェアテスト入門 押さえておきたい<<要点・重点>>

知識ゼロから学ぶソフトウェアテスト 【改訂版】

資格試験

  • JSTQB (JSTQB認定テスト技術者資格)

  • JCSQE (ソフトウェア品質技術者資格試験)

  • IVIA (IT検証技術者認定試験)

  • QC検定 (Quality Control 品質管理検定)

  • 情報処理技術者試験にはテストエンジニアにあたる区分はない・・・

長々と話してきましたが・・・

全てのバグを生まれる前に消し去りたい。 すべての宇宙、過去と未来の全てのバグを、この手で

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment