質問
私はソフトウェアの品質保証が初めてです。上司から、私たちが会社でどのように進むことができるかを知るように言われました。ソフトウェアの品質保証のすべてと、ソフトウェアの品質保証に使用できるオープンソースツールがどのオープンソースツールであるかを教えてください。
解決
「The Great and the Good」のブログを読んでみることができます。Hi「Bliki」のMartin FowlerやRobert Martinのような人々は、ボブおじさんのBlatherings ...そしてJoel Spolskyの今ではソフトウェアで廃止されました。品質とは何かについての意見にはすべて良い。
現在、JavaとMackerやFindBugsなどのツールを使用して、コードの正しさとガイドラインの順守をチェックしています。
再現性と管理のために、ソース制御システムから抽出されたコード上のハドソンやクルーズコントロールなどのビルドサーバーによってユニットテストが自動的に実行されることをお勧めします。また、コードの構築、テストなどを示すことができます。
最終的には、彼らが何をしているのかを気にする善良な人々に帰着します。
他のヒント
テスト、テスト、テストがすべてです。ユニットテストフレームワーク、コードアナライザー、メモリプロファイラーなど、これを達成するのに役立つ多くのツールがあります。使用するツールは、会社がソフトウェアに使用するプログラミング言語と開発プラットフォームに依存します。
他の人が言ったように、テストはソフトウェアQAの重要な部分です。しかし、誰もまだコードレビューについて言及していないことに驚いています。ピアコードレビューを開発プロセスに統合する方法をご覧ください。これは、コードの品質を改善し、チーム全体で知識を共有する素晴らしい方法です。問題を早期に検出すると、それを修正するのが簡単で安価なので、ソースコードの変更ごとにコードレビューを検討してください。
QAの優れた徹底的な紹介が必要な場合は、パートIIとVを読む コードが完了します スティーブ・マッコネルによる。実際、すべてを読んでください - それは、コードの品質を改善する方法の実用的な例と、さまざまなQA技術の利点を説明するメトリック(管理に示すことができる)を提供します。
私が言及する章には、次のようなトピックが含まれています。
- 品質を向上させるための概念と実践を設計します
- 高品質のルーチン
- 防御プログラミング
- 擬似コードプログラミング
- ソフトウェアの品質を改善するための手法(相対的な有効性の評価を含む)
- 品質保証をいつ行うか
- 共同構築(ペアプログラミング、コード検査を含む)
- 開発者テスト
- デバッグ(心理的な考慮事項を含む)
- リファクタリング
- コード調整戦略とテクニック
マッコネルのソフトウェア品質の一般原則を引用するには:
品質を改善すると、開発コストが削減されます
また、使用される検証プロセスについてです。ソフトウェアを終日テストすることはできますが、それが何をするつもりなのか、そして期待される結果が何であるかが間違ったものを完全にテストすることができることがわからない場合。開始するための強固なフレームワークをレイアウトする本当の良い本があります(会社がISO認定されている場合、ISO要件もカバーします): http://www.amazon.com/computer-system-management-validation-cycle/dp/1932828095
バーナードが上記で述べているように、テストを行う必要があります。 Javaで開発している場合は、Junitを使用できます(nunit Worksも.NETで動作します)。単体テストはほんの始まりに過ぎませんが、コードカバレッジツールを調べて、ユニットテストがどれほど完全であるかを示すことができます(オープンソースツールEmmaとCoberturaがこれをJavaに提供します)。また、ハドソンを使用して、変更がソースツリーにチェックされるたびにこれらのテストを自動的に実行することもできます(ハドソンはあなたの開発がどれほど安定しているかを示しています。たとえば変更)。
その後、JavaのFindBugsのようなものを見て、危険なプラクティスを見つけることができます。 Java開発にEclipseを使用している場合は、Metricsプラグインを取得してコードで他のさまざまな分析を実行できますが、これらのメトリックが実際に示すものを知る必要があります。
最終的に、製品の品質は、回帰を引き起こすことなく目的を達成する変更を確実に導入できるかどうかによって定義されます。上記のツールはほんの始まりに過ぎません。テストが得意となるのに長い時間がかかります(私は自分でそこにいません)が、組織にツールとプラクティスを紹介すると、そこから作業することができます。
一般的に、これはITスタッフのみの問題であると考える共通のtrapに陥ってはいけません。明らかに、コードにバグを望んでおらず、それに役立つツール/プロセスが数多くあります-QAは本当に大きなスコーププロセスです。 DBA_ALEXが上記のように、ソフトウェアでビジネスのためにどのような問題を解決しているかを知る必要があり、一日の終わりには、その質問に答えるためにビジネス団体を関与させる必要があります。最終ソリューションには、ITとビジネスの両方の人が含まれていることを確認してください...