読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

ソフトウェアテストに関する基礎知識

JUnit
<スポンサーリンク>

「現場で使えるソフトウェアテスト」という本を100ページくらい読みました。
ソフトウェアテストの理論を基礎から説明するために多くのページを割いてくれている本はそんなに多くないため、勉強になりました。

現場で使えるソフトウェアテスト Java編

現場で使えるソフトウェアテスト Java編

勉強になった部分の要点をピックアップしてみます。
詳しくは書籍を参照してください。

■ソフトウェアテストって何?
ソフトウェアテストとは、利用時に問題が起こらない品質を確保するためにバグを見つける活動のことである。
テストというと、良い点数を取ることが目的のように見えるが、ソフトウェアテストの方は逆に、失点(バグ)を見つけてこれらw補修することが目的となる。

ソフトウェアによって発生する問題は以下の3つが考えられる。

1.止まってしまう
2.間違った動作をする
3.処理が遅い

また、企業側には、
1.製品の評価が下がる。
2.企業の信用が失墜する。
3.改修のためのコストが発生する。
のような営業が発生する。

■品質って何?
品質という言葉は現場でもよく聞くけれど、これをちゃんと定義できているかどうかは少し怪しい。
品質とは、要求に対する適合度のことである。
要求というのは、ユーザがソフトウェアに期待する条件のこと。

具体的には、
・要件定義書で定めたとおりに動作すること(機能性)
・決まった時間で連続で動作すること(信頼性)
・複数人で同時に利用しても処理が時間内に完了すること(効率性)
などがある(他には、使用性、保守性、移植性など)

「ISO/IEC9126 ソフトウェア品質特性モデル」というものがあり、ソフトウェアの品質について詳細に語られている。
http://www15.ocn.ne.jp/~squality/software-quality/iso9126.htm
http://www.ipa.go.jp/files/000005106.pdf

たくさんあって、読むのも疲れるけれど、新人にソフトウェアテストについて教えることになったときなどは、参考にしたい。


■ソフトウェア開発の手順

順番 やること 意味
1 要件定義 ユーザーの要求を満たすためのソフトウェアの要件を整理する
2 外部設計 要件を満たすためのソフトウェアの仕様を決定する
3 内部設計 仕様通りに動作するためのソフトウェアの内部構造を決定する
4 プログラミング 決定した内部構造通りにプログラミングする
5 単体テスト 決定した内部構造通りにプログラミングできたかを確認する
6 結合テスト ソフトウェアが仕様通りに動作するか確認する
7 システムテスト ソフトウェアの要件を満たしているかを確認する


■上流工程と下流工程の意味
大手SIが上流工程を担当し、協力会社が下流工程を担当することが多い。
これは日本のIT業界のゼネコン構造などと揶揄されるわけなんだけど、実際の言葉の定義を見てみる。

上流工程というのは、ユーザの要求を詳細化する工程のことである。
要件定義書、外部設計書、内部設計書を作成する。

下流工程というのは、詳細化したことが正確にプログラミングできているかを確認しながら統合化するフェーズのこと。
単体テスト、結合テスト、システムテストなどを行う工程を下流工程という。


■コーディング規約
コーディング規約は以下の点に注意して作る。
1.品質レベルの定義
→保守性や作法などのレベルを明確にする

2.読みやすくする

3.ルール数は理解できるレベルにする


Javaのコーディング規約を作るには、以下のOracleの規約が役に立つ。
http://www.oracle.com/technetwork/java/codeconventions-150003.pdf

GoogleのJavaコーディング規約もあるみたいだ。
http://google-styleguide.googlecode.com/svn/trunk/javaguide.html#s4.1.2-blocks-k-r-style

Googleでは、インデントはスペース2つとしているようだ。

return new MyClass() {
  @Override public void method() {
    if (condition()) {
      try {
        something();
      } catch (ProblemException e) {
        recover();
      }
    }
  }
};

Eclipseでコーディング規約をチェックするプラグインは、Checkstyleがある。
http://www.atmarkit.co.jp/ait/articles/0604/15/news015_2.html

潜在バグを発見するプラグインに、FindBugsがあるので、入れておくといいと思う。
下記の記事が詳しい。
http://www.atmarkit.co.jp/ait/articles/0504/16/news016.html