抗培養試験で試験を開始するにはどうすればよいですか?[閉まっている]


20

自白します。形式化された自動化されたテストは、私のプログラミングの背景の一部ではありませんでした。現在、私は多くの開発者(大部分は何らかの種類のWeb開発者)を抱える非常に大きな会社で働いていますが、彼らのほとんどもテストしていないことは明らかです*。(* 正式に発言し続けるつもりはありません。推測してください。)

テストを開始するために組織のサポートを受けるのを待つ場合、それは決して起こりません。経営陣のテストを押して「内部から物事を変えよう」とすると、変化が起こる前に枯渇してしまいます。今すぐテストを開始する必要があります。

しかし、TDDとその同類を使用すると、実動コードと一緒に多くのテストコードを作成することになります。バージョン管理システム(すべて集中管理)は、テストコードを保存するために編成されていません。ワークステーション上ですべての場所を見つける必要があります。

価値のない、またはツールを提供しない文化の中で、ソフトウェアテストの個人的な実践を始めることは可能ですか?公式のツールと組織にテスト、フレームワーク、および自動化の場所がない場合にテストできるようにするために、どのようなテクニックとツールを使用しますか?


14
会社のVCSにテストコードを保存できないのはなぜですか?src実動コード用のディレクトリがあるプロジェクトでは、ディレクトリを追加することも可能だとtest思います-それは何らかの理由で明示的に禁止されていますか?
ペテルトレック


@PéterTörökあなたは私たちを過大評価しています。srcディレクトリはなく、Webルートがあります。コードを中央VCSにチェックインするには、Webルートにチェックインします。
小次郎

アンチテスト文化にソース管理がない場合、チームが抱えていると確信している他の多くの問題を解決するので、最初に(または同様に)しようとします。次に、テストのために何をしたいかの基礎を作ります。
スコットワイリー

@ScottWylieそんなことは言わなかった。VCSがありますが、テスト用に編成されていません(または、webrootのものを直接編集する以外の多くのことはありません)。誰かのneが1998年にCVSを設定し、それ以降誰もそれを変更していないと思います。
小次郎

回答:


22

私はこれを個人的にかなり成功させました。成功の主な要因:

  • (仮の)管理サポートを取得します。自動化テストの利点は十分に文書化されており、少なくともマネージャーに試してもらうようマネージャーを説得する必要があります。それには、VCSとビルドサーバーの場所を見つけることが含まれます。
  • 自動テストは、頻繁かつ自動的に実行される場合にのみ完全な価値を提供するため、問題をすぐに把握でき、実行を忘れない人に頼る必要がありません。少なくとも毎日実行するビルドサーバーが必要です。これは古いワークステーションでもかまいません。Jenkinsは、実行するための作業をほとんど行いません。
  • 例でリード。テストを書き、彼らがあなたに提供している利点について話し、他の開発者によって導入されたエラーを明らかにするとき、潜在的にはるかに大きな恥ずかしからどのように保護されたかという点でそれについて話します。
  • 垂れ下がった果物を探しに行きましょう。アプリケーションの一部の部分はテストが難しく、他の部分は簡単です。堅牢なものもあれば、脆いものもあります。脆いがテストしやすい部品のテストを書くことは、最短時間で最大の価値を提供します。
  • 再利用可能なテスト、たとえば、すべてのモジュール(Webページ、RESTサービスなど)に必要なテスト規則や機能を作成できるかどうかを確認してください。

7

管理サポートがなければ、あなたは水中で死んでしまいます。経営陣は、あなたがやりがいのある仕事をしていないと主張し、あなたのレビューで罰せられ、最終的に解雇されます。早期のテストでコストを削減できることを管理者に示す方法があります。文化を変えることは可能ですが、チョッピングブロックに首をかけています。

何をする前に変化をもたらすかについて、マキャベリザプリンスの章を読むことをお勧めします。


あなたの答えは、テストに費やす時間がそうでないことを示唆する2番目の答えです。しかし、エバンジェリストのテスト(私には思えます)は、テストによって時間を節約できることを教えてくれます。長い目で見た場合だけでなく、中規模プロジェクトまでの実行中であっても、本番コードのデバッグにそれほど時間を費やすことはなく、テストによりコードを調整してそれらを渡すように強制されるため、理論の理解)はすべて、コーディングに費やされる全体的な時間を短縮するのに役立ちます。あなたはそうではないことがわかりましたか?
小次郎

1
@kojiro:はい、全体的なテストにより時間とコストが削減されます。ただし、短期的にはそうしません。一部のマネージャーは、短期をより重要視しています。結局のところ、会社が支払いを受けて、バグ修正のために顧客に請求できるソフトウェアでなければ、良いソフトウェアとは何か。
サルダスリオン-

2
テストは時間を節約できますが、あなたは最初だけにその作業のすべてを行うことで検証可能な、あなたのしている無駄時間であることを半分のコードをやり直ししなければならないとき、道ヶ月は、テストを持つことができるし、その後、それがスピードアップします。マネージャーは「今月」に考える「今後数か月」ではないと思うので、「開発者はテストで遊んでいる新しいコードを作成していないので、「時間の無駄」しか見えない」 「既に機能している」コードを販売またはリファクタリングする可能性が高い
ウェインモリナ

通常、短期間でも時間を節約できます。何かに取り組んでいるときは、テストを通じてコードを実行し、アプリ全体を実行して特定のコードを実行させる必要がある場合、はるかに迅速です。
ステファンビリエット

3

私の経験では、文化が反テストである場合、それを合理的に導入することはできません。テストは時間の無駄とみなされ、「時間の浪費」または「時間がかかりすぎる」ことをre責されるか、テスト可能な方法で記述されていない長年のコード(たとえば、インターフェイスなし、すべて緊密に結合されている)そして、コードをリファクタリングおよび/または書き換えるのに多くの時間を費やす必要があります(したがって、「時間がかかりすぎる」「時間を浪費する」というリスクを冒して)、テストを最初から書くことができるようにします。

既存のものとやり取りするだけのグリーンフィールドのものをやっている場合(悪い領域の周りに素敵なラッパーを作成する場合)、または問題を引き起こさないか、必要としない少量でそれを行うことができる場合、チャンスがあるかもしれません「自分に割り当てられていないタスクを処理する」ことで、犬小屋に入れることができます。


1

自動テストで対処できる問題(現時点では認識されていない可能性がある)があるという十分なケースを作成できるようになるまで、それほど遠くまで到達するとは思いません。

定義されたスクリプトに対する手動テストの文化がある場合、不完全または不正確な結果のリスクと相まってそれらのスクリプトを実行するコストがあります。この履歴(文書化された形式または「戦争物語」形式)が存在する場合があります。長期的なコスト削減を実現するために、これらの手動テストの一部を自動化するパイロットプロジェクトを提案します。

手動のテスト機能さえなければ、自動化されたものであれそれ以外の形式のテストであれ、価値があるとビジネスが認識していないことをお勧めします。その場合、今後の道は長く険しい道であると考えますが、ソフトウェア品質へのさりげないアプローチを採用することでビジネスが利益を得ることができるという明確なデモンストレーションが必要になる可能性があります。それができない場合、商業的な理由でアイデアに対するサポートがどのようにあるかを見るのは難しいです。


0

1つのアイデアは、他の誰かが書いたコードに欠陥があることを証明するテストを書くことです。コンセプトを売るべきです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.