自動化されたテストを人気にする方法は?[閉まっている]


13

私たちのコードベースは現在20年間成長しています。私たちは500klocで作業する約10人の開発者+ sqaです。少し前に、私たちの小さなチーム(2人の開発者、1人はsqaから)が自動化されたテストプログラムに取り組み始めました。現在、1回の実行には11時間かかり、どういうわけか統合テストです。この問題を解決し、誤検知を減らすために取り組んでおり、その点で大きな進歩を遂げています。しかし、詳細は重要ではありません。

問題なく機能しており、改善を続けています。私たち(小さなチーム)はとても気に入っています。何かを壊すと、2か月後ではなく1日後にsqaが表示されます。また、私たちのマネージャー(dev + sqa)はこのアイデアを気に入っています。しかし、チームの他の人々はテスト結果を無視します。彼らの心では、チェックイン後にテストが失敗する場合、それはテストの問題であり、コードの変更の問題ではなく、単なるおもちゃのプロジェクトです。テストの失敗が本当のエラーである場合、私たちは何度か議論しました。ほとんどの場合です。

私たちは何かを強制することはできませんし、したくありません。自動テストが重要であることをどのように示すことができますか?


11
これはソフトウェアエンジニアリングの問題ではありません。それは人の問題です。
ロバートハーベイ

@RobertHarvey「意見ベース」と、このサイトが完全に適合するというコメント(およびそのコメントに対する賛成)のために、私はSOにダウン票を獲得しました。だから:どこに尋ねればいいですか?私を教育してください。
ピーターシュナイダー

2
私はこれが人々の問題であることについて、@ RobertHarveyと一緒にいます。しかし、Workplaceによると、あなたの質問はおそらくだましだと考えられます。たとえば、根本的にあなたがworkplace.stackexchange.com/questions/44964/に
Peter M

1
それらの投票者(または投票にさえ)があなたを落胆させないでください!一部の人々は、そのような質問が重要であり、おそらく助けを提供できると理解するかもしれません。ちなみに、以前のバージョン(自動テストなし)はバグの箱でしたが、私の同僚も自動テストの有用性を理解できていません。1つだけを変更し、他のいくつかの、一見無関係なものを壊します。ただ学びたくない人もいます(新しいことを学ぶことに抵抗があります)。
ベルンハルトヒラー

1
この質問が閉じられたことは残念です。ソフトウェアエンジニアリングが何かを意味する場合、それは実際の人々と働くことの問題を意味し、そのような問題への答えは意見を伴います。つまり、いくつかの簡単なアイデア:(1)テストで偽陰性が得られた場合、結果は時間の無駄のように感じるので、これは間違いなくプッシュバックを増やします。(2)可能であれば、ランタイムを停止します。2か月よりはるかに優れていても、11時間はすぐには感じられません。(3)sqaは、これらのテストを監視するメトリックとして採用します。これらは、この領域の組織ですでに認識されています。
デールハグルンド

回答:


4

免責事項

私はマネージャーのように聞こえるかもしれませんが、自動化されたテストが優れていることを説得する必要がある開発者としてこれを書きました。


開発者の基本的な心理を理解する必要があります。開発者がコードをコミットすることは根深い必要性です。彼らがそうすることを妨げるものはすべて、非常に非常に悪いことです。失敗したテストは間違いなくそうすることを妨げるものであり、それは悪いことです。したがって、抵抗。

あなたが指摘しなければならないことは、自動化されたテストは短期的にそれらを遅くしますが、長い目で見れば彼らは多くの悲しみを救い、実際にそれらをスピードアップします。開発者が嫌いな他のこと、つまりバグを修正することで、時間を短縮できます。

そして、はい、あなたはそれを実施しなければなりません。管理者から無条件のサポートを受け、自動テストの作成を必須かつ交渉不能にする必要があります。時間が経つにつれて、開発者はそれらに慣れるでしょう。役立つのは、さらに多くの新しい開発が行われたこと、および自動テストを導入してからバグの数がどれだけ削減されたかを示すメトリックを考案できる場合です。言葉は不安定です。数字はしっかりしています。そして数字は、平均的な開発者が言葉よりもよく理解するものです。自動化されたテストが良いことを固体数を使って証明できれば、それらに対する抵抗はほとんどないでしょう。


11

彼らの考えでは、チェックイン後にテストが失敗した場合、それはテストの問題であり、コードの変更の問題ではなく、単なるトイプロジェクトです。テストの失敗が本当のエラーである場合、私たちは何度か議論しました。 ほとんどの場合です。

あなたの問題があります。テストが不安定である場合(「ほとんどの場合」信頼できる場合でも)、人々は結果を無視する傾向があります。自動化チームは、これらの偽陰性の排除に集中する必要があります。そうしてはじめて、チームの他のメンバーは、実際にそれらを信頼するのに十分な自信を獲得します。


5
もう一度、それは何か他のものである可能性があります。変化に対する抵抗のように。テストが失敗した場合、コードまたはテストのいずれかを常に修正する必要があるため、テストが不安定であるためにテストを無視するという態度は見当違いです。
ロバートハーベイ

何かが壊れていると確信したときに彼らに話しかけました(たとえば、問題の機能に影響するチェックインの後にテストが3回連続で失敗しました)。しかし、はい、信頼性を高めることが現在の優先事項です。
ピーターシュナイダー

1
@PeterSchneiderテストは連続して100回失敗する可能性があり、特にテストが間違っている場合は失敗します。
ピーターB

一方、失敗することのないテストは、ほとんど完全に役に立たない可能性があります
ウラジミールストッキ

1
+1脆性試験は間違いなく問題です。開発者は、作成するテストが有用であり、不必要な複雑さをもたらさないこと、および忙しいことはないと確信する必要があります。
アンドレス

6

私たちは何かを強制することはできませんし、したくありません。

あなたは間違いなくそれを実施すべきです!誰かが新しいコードをプッシュし、テストが失敗した場合、コードは拒否されるべきです!大規模なソフトウェアプロジェクトを確実に維持する唯一の方法です。


それはシステム、テスト、規模、開発プロセスに依存すると思います。すべてのバグをすぐに解決できるわけではなく、すべての問題をすぐに解決する必要もありません。
-NickL
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.