質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1741閲覧

ソフトウェア開発初心者です。ソフトウェアのテストの仕方について質問です。

ComSatooooshi

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/02/15 04:22

編集2015/02/15 04:24

ソフトウェア開発初心者です。製作したソフトウェアのテストについて質問です。
学校の課題でソフトウェアの開発を行っておりますが、テストの方法がいまいち
良くわかりません。開発するソフトウェアによってテストの方法は異なると思います
が、基本的なテストの作り方や考え方が知りたいです。例えば特定のデータ状態の時に
想定外の動きをする等の不具合等を発見する為にはどのような考え方でテストやテストデータ
を作れば良いのでしょうか。ご教授の程宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

matsubokkuri

総合スコア744

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ComSatooooshi

2015/02/15 05:39

ありがとうございます。教えて頂いた事を活かし実践してみます。
guest

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
munyaX

総合スコア783

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問