非常に大きなアプリケーションをテストする方法


10

私は非常に大きいPHPアプリを持っています。通常、2〜3人の開発者がフルタイムで取り組んでおり、変更を加えてバグ(咳機能)を作成するところまで来ています。ソフトウェアは言うまでもなく複雑ではありません。多くのことが起こっているだけです(35〜コントローラー、同じモデルなど)。

注意していても、このビューを変更すると(要素のIDを微調整)、特別な条件(片足でログアウトしている)で発生するajaxクエリが壊れるのは簡単です。

ユニットテストは最初に思い浮かぶものですが、別のアプリで試してみたので、それらを忘れたり、テストを記述してからテストを実行したりすることに多くの時間を費やすことは簡単です。ライブ配信する前にコードがチェックされるステージング環境があります。

多分パートタイムのQ / Aの人が必要ですか?

誰もが何か提案/考えを持っています。


「... テスト行う」というのは、よりも意味があることですか?
ajax333221

回答:


25

はい、Q / Aスタッフが必要です。多くの理由のいくつかが含まれます

  • 専用のテスターは費用がかかりますが、多くの場合開発者よりも費用がかからないため、時間を使い切らないことの利点は追加の費用よりも大きくなります。
  • 専任のテスターは、特に自動化する方法が明確でないものをテストする方法を知っています。ブラウザーを介してシステムと対話するための自動テストを実行することは、やや厄介ですが、確立された分野です。すでにその方法を知っている人を見つけた場合、優れたツールやセットアップを学ぶためにこれ以上の時間を費やす必要はありません。
  • プロのテスターは、実際に欠陥を見つける方法を知っています。彼らは、アプリケーションのユーザーが考えるように考える可能性がはるかに高いため、実際に本番環境で発生するシステムの状態を実行します。つまり、非常に目立つようになるバグは早く発見される傾向があります。 、非常に緊急のパッチの煩わしさとコストを節約できます。
  • それを一般化すると、テスターは開発者のように考えません。経験がなければ、これがどれほどの違いをもたらすかを伝えることは困難です。意識しているかどうかにかかわらず、開発者は欠陥を見つけたくないのです。彼らはシステムがどのように機能するかを知っており、現実の問題を引き起こす典型的な無意味な(彼らにとっての)入力やデータを回避する傾向があります。何かが予期しない方法で機能する場合、彼らはそれを回避する方法を知っており、これを欠陥としてまったく見ない傾向があります。彼らは決してシステムの応答が何を意味するのかを理解するのは困難です。なぜなら、ほとんどすべての実際のシステムでこれがトラブルの主要な原因であるにもかかわらず、彼らがそれらを書いたからです。簡単に言えば、プログラマーは高度な訓練を受けた専門家であるため、ユーザーが抱える典型的な問題に苦手になる傾向があります。テスターは、最も関連性の高いテストを実行する時間がはるかに簡単になります。

とはいえ、屋根を介してシステムの品質を向上させるための開発者とテスターの間の生産的な協力に勝るものはありません。開発者は、テスターが気付く前に、何かが間違っているという症状に気付くことがよくあります。開発者は多くの場合、問題をより効率的に再現する方法と適切な問題レポートを作成する方法をテスターに​​アドバイスできます。つまり、問題を理解するために実際に必要な詳細を含めることができます。ただし、これらすべてに、連携できるテスターが少なくとも1人必要です。


3
+1。私たちは、一般ユーザーが抱えている問題を検出するための高度な訓練を受けています
superM

3

あなたは、おそらくより多くのまたはより良い回帰テスト(ないspecificially必要ユニットテストを)。自分自身を分析するためにどのような種類のテストを行う必要がありますが、それらはあなたが話しているバグを検出する必要があります。テスト計画を立て、それらのテストに優先順位を付けることをお勧めします。これを行うときは、最初はテストの自動化についてあまり考えないでください。

その後、妥当な労力でテストの一部またはほとんどを自動化できるかどうかを自問してください。答えが「はい」の場合は、プログラムする必要があります。答えが「いいえ」で、「パートタイムQ / A担当者」の方が安いと思われる場合は、必要なものは不明瞭なはずです。ほとんどの場合、両方を用意することをお勧めします-手動テストと新しいテストを発明するためのQ / A担当者、および多くの自動回帰テストも。


+1は、回帰テストについて言及し、単体テストが唯一の効果的な解決策ではないことを指摘しました。
Giorgio

こんにちは。回帰テストについてもう少し詳しく説明していただけますか。これらは古いバグが再び発生するのを防ぐためのものだと思いますが、メソッドを使用してこれを完了させることを提案しますか?ユニットテスト?チェックするものの「チェックリスト」?ありがとう:)
ウィザード

@Wizzard:回帰テストという用語は、既存の機能している機能に対するあらゆる種類のテストの一般的な用語にすぎません(アプリを変更するときにそれを壊さないようにするため)。これには、チェックリストからのテスト、フロントエンド(ここではおそらくブラウザー)を介した自動テスト、および単体テストも含まれます。私の提案は、最初にをテストするか、独立してそれどのようにテストするを考える必要があることです(たとえば、「単体テストを試しました」と言った場合、たとえば「何を」ではなく「方法」にすでにいる) 。
Doc Brown

2

プロのQAを雇う

これは、商用プロジェクトを開発している場合に行う必要があります。堅牢なテスト戦略なしで製品を準備しておくと、バグ修正によりコストが増加します。さらに、新しい顧客を獲得するか、それらを維持するかは、アプリケーションのテストの質にも依存します。

一般的に言えば、ユニットテストはコードベースに適用する必要がありますが、統合テストと手動テストは破棄しないでください。


1

ユニットテストは、特にプロジェクトが成長している場合は、本当に良いアイデアです。単体テストを書くことが習慣になれば、作業が大幅に楽になります。YouTubeには、クリーンなコードの記述に関するビデオがあり、メンテナンスとテストが簡単です。

QAエンジニアも必見です。優れたQAテスターは、機能のバグを見つけるだけでなく、アプリがユーザーフレンドリーかどうかもテストします(自分でテストすることはほとんど不可能です)。 ここでは QAチームがあなたの時間とお金を節約し、助け、より良いソフトウェアを提供する方法を説明する素敵な記事があります。


1

15のコントローラーとモデルはそれほど大きくありません。筆記テストを習慣にするのに少し時間がかかります。(友好的な方法で)それに向かってお互いを蹴るのは非常に役立ちます。

テストカバレッジをある程度まで制御できるツールが存在します。PHPのコードカバレッジツール


1
申し訳ありませんが、35台のコントローラーとほぼ同数のモデルです。うーん、なんらかの形の単体テストが役立つと思われます。
ウィザード
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.