ソフトウェア開発初心者です。製作したソフトウェアのテストについて質問です。
学校の課題でソフトウェアの開発を行っておりますが、テストの方法がいまいち
良くわかりません。開発するソフトウェアによってテストの方法は異なると思います
が、基本的なテストの作り方や考え方が知りたいです。例えば特定のデータ状態の時に
想定外の動きをする等の不具合等を発見する為にはどのような考え方でテストやテストデータ
を作れば良いのでしょうか。ご教授の程宜しくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ソフトウェアテストという用語は具体的なようで、結構抽象的な言葉です。
ソフトウェアテストも、やろうと思えば、かなり細かくテスト出来ます。やらないと思えば、かなりおおざっぱなテストになったりします。
私がプロジェクトでソフトウェアテストの指針を作るときは以下の2点を重視して考えます。
- 目的:テストによって何を担保したいかを考える
- 程度:コスパを考える
上記が定まったら、ソフトウェアテストのメソッドを使って実現してきます。
http://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%86%E3%82%B9%E3%83%88
投稿2015/02/15 04:28
総合スコア744
0
ベストアンサー
テストにも色々ありまして、詳しくはテストについて記述された書籍が色々出ていますので図書館や本屋さんでまずはパラ読みしていただければと思います。
http://qiita.com/ktaro/items/8c3d94d6c21a0c86b799
学生さんということなので最初に耳にするのは以下の2つだと思います。
・単体テスト(ユニットテスト)
・結合テスト
ここではこの2つのイメージを何となくお伝えします。
語弊を恐れずざっくりというと、
ユニットテストとは関数やメソッド、クラスなどの「部品」が正常に動くかのテストになり、結合テストとは「全体」を通して正常に動くかをテストするものです。
ユニットテストのイメージですが、例えば以下のような関数があった場合、
lang
1/** 2 * 整数の差分を返却する 3 * 4 * 引数a,bを受取り、その差分を返却する。 5 * a, bのいずれかが整数でない場合はnullを返却する。 6 */ 7function subtract(a, b){ 8 return(a - b); 9}
関数subtractに対して様々な値を渡し、どのように動作するかをテストします。
if( subtract(5, 3) === 2 ) printf("OK"); //2が返ってくるか
if( subtract(3, 5) === -2 ) printf("OK"); //-2が返ってくるか
if( subtract(-1, 1) === -2 ) printf("OK"); //-2が返ってくるか
しかしここで以下のようなテストを行った場合、期待した通りには動いてくれません。
これでバグがひとつ見つかりました。
if( subtract("a", 5) === null ) printf("OK"); //nullが返ってくるか
if( subtract(5, "a") === null ) printf("OK"); //nullが返ってくるか
if( subtract("a", "a") === null ) printf("OK"); //nullが返ってくるか
このように様々な条件下で「部品」が期待した通り(仕様書通り)に動くかテストを行うのがユニットテストのイメージになります。これらは修正を加える度に行う必要がありますが、手作業で毎回行っていると大変すぎるので、テスト用のフレームワークを利用することが多いです。
ここではプログラムレベルでのお話をしましたが、単体テストといった場合には、特定の「機能」が実装されているかどうかのことを指す場合があります。ECサイトではあれば「ショッピングカードに追加する処理」「ショッピングカートに追加した物を削除する処理」といった具合です。
結合テストはこの応用です。
作る物やシチュエーションによって変わってきますが、先ほどのECサイトの例で言えば、
◯新規ユーザー
1. トップページにアクセス
2. 商品一覧を表示
3. 商品をカートに入れる
4. 新規登録のフロー
5. 決済
6. 完了画面
◯既存ユーザー
1. トップページにアクセス
2. 商品一覧を表示
3. 商品をカートに入れる
4. ログインのフロー ★ここが違う
5. 決済
6. 完了画面
といった具合に各機能が連携できているか、
データの種別毎に期待したとおりに動作するか(ここではユーザーの種類毎)といったところを見ます。
かなりざっくりとお話ししましたので多少嘘をついているところもありますが、何となくの全体像をイメージしていただければと思います。開発に置けるテストは非常に奥が深いですし、日々進化しています。その割にちゃんと理解して出来る方はそれほど多くないので、学生のうちに色々と勉強しておくと、強力な武器になりますよ!
#かくいう自分もあまり得意なジャンルではないので人のこと言えないのですがw
参考までに。
投稿2015/02/15 06:08
編集2015/02/15 06:15総合スコア783
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/02/15 05:39