Help us understand the problem. What is going on with this article?

テストってどうする?

More than 5 years have passed since last update.

また、遅れてしまっています。すみません。

開発が終わったら、絶対あるのが「テスト」。
格好良く、テスト駆動開発なんてやってみたいものですが、
まあ、小規模でやっているとテスト駆動開発っておいしいの?って感じで
ついつい、後回しになってしまいます。

テストについて主観で語ります。

テストって何?

テストっていろいろあるけど、開発側が行うのが、
・単体テスト
・ユニットテスト
・結合テスト
・納品前テスト

のテストが大雑把にいってこんな感じ

テストの種類

具体的に言うと

・単体テスト
 ⇒開発者が仕様書の要求通りに動作するか確認するテスト
 ⇒ソースコード単位か、機能単位で実施
 ⇒バグというよりは、動作しないことが多い

・ユニットテスト
 ⇒開発者もしくは管理者(PLくらい?)が仕様書の要求通りに動作するか確認するテスト
 ⇒機能のまとまり(登録から表示、編集、削除くらい)で確認
 ⇒複数のソースコードのまとまりをまとめてテスト
 ⇒結構、バグが大量発生する

・結合テスト
 ⇒開発者、管理者、テスト担当者が仕様書の要求通りに動作するか確認するテスト
 ⇒システム全体を確認
 ⇒システムとしてのデータの整合性や機能の整合性も確認
 ⇒手戻りややり直しが大量発生する

・納品前テスト
 ⇒お客さんに納品もしくは、サービスリリース前に最終確認するテスト
 ⇒最終確認なので、バグは出してはいけない
 ⇒バグが出た時は大変な事になるよw

・検収テスト
 ⇒受託開発の場合、お客さんが確認するテスト
 ⇒まあ、ここで出てくる問題は、機能追加の要求だったり改修要求がほとんど
 ⇒お金の話になるので、管理者や営業に任せようw

こんな感じ

よくやるテストの流れ

じゃあ実際どんなテストをやるのか?

1.単体テスト
 ⇒コード開発者の責任です。

2.ユニットテスト
 ⇒詳細仕様作成者の責任です。
 ⇒機能矛盾を開発者は指摘してあげましょうw

3.結合テスト
 ⇒プロジェクトメンバー全員でバグを見つけましょう。

4.モンキーテスト(フリーテスト)
 ⇒プロジェクトメンバー以外もしくは仕様を理解していない人に、
  とりあえず全部のリンクやボタン、メニューを使って貰って、エラーが出ないか確認
 ⇒開発者だと、エラーが出やすい場所を無意識に避けていたりするので、仕様を知らない人に
  全部触ってもらってエラー画面が出ないくらいかの確認はしましょう。
 ⇒最近、これをやらないプロジェクトが多いね。。。

5.ブラックボックステスト
 ⇒テスト仕様書通りに、テスト担当者が動作チェックを行う。
 ⇒「○○ができる」とか「××を入力して、△△になる」なんていうテスト仕様書。
 ⇒正常系とエラーをわざと発生させる異常系をやる。

6.ホワイトボックステスト
 ⇒開発者とテスト担当者がペアになって、テスト仕様書通りに操作し、内部のデータ状態を確認する。
 ⇒内部処理と外部処理が正しく行われているかをチェックする。
 ⇒ここまでやれば、バグはほとんど潰れているはず。

7.納品前テスト
 ⇒管理者(PL)とか営業にやらせましょう。
 ⇒お客さんに納品するまたはサービスリリース前のテストなので、自分たちで最後は責任を取れって感じでw

8.検収テスト
 ⇒これは、受入テストなので、まあどれくらいテストをやるかはお客さん次第。

こんな感じ。

テストって自動化したいよね

最近流行のジェンキンスおじさんとか、サークルCIとかテストを自動化するツールと言われているものは
あるけど、基本、コードを書いた人がきちんと単体テスト(デバッグとも言う)をすることが大切だと思う。

PHPだとPHPUnitやRuby on RailsだとRSpecがあったりするけど、InputとOutputの確認だけなので、
処理ロジックの正当性まではチェックしてくれない(と思っている)。
否定はしないよ。

自動化も結構だけど、自分でデバッグやスタックトレースを読める力を付けることが重要だよ。

mesaka
元フリーランス的なLAMPの受託開発をメインに仕事をしていた個人事業主(法人化済み)のエンジニア。PHPが好き。Javaも出来る。AWSとかラズパイとか、新しモノ好き。でも、最近自分の会社を辞めて、正社員として就職しました。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away