あなたはどうしますか、外部ディベロッパーとなテストコードについて教えてください。[定休日]
-
02-07-2019 - |
質問
当社の開発者が継続的にコンピュータを使うというバージョン管理な試験です。品質のコードはそれによって被害を被っている.
まうのは、この問題を解決することはできま?
編集
私の話を聞い回数で与えていると言っているが、警告書
解決
開発者にコードのコミットを許可する前に体系的にコードレビューを実行すると、問題はほとんど解決されます。しかし、これはあなたの場合ではないようですので、これは私がお勧めするものです:
- 開発者に相談します。チーム内の他のユーザーに対する結果について話し合います。ほとんどの開発者は仲間に認められたいので、これで十分かもしれません。また、数週間前のコードよりも、心に新しいコードのバグを修正する方がはるかに簡単であると指摘します。この部分は、何らかの形式のコード所有権がある場合に意味があります。
- しばらくしてこれが機能しない場合は、バグのあるコードのコミットが作者にとって不快になるようなポリシーを導入してください。人気のある方法の1つは、ビルドを壊した人に、次のビルドを作成することの責任を負わせることです。ビルドプロセスが完全に自動化されている場合は、代わりに面倒を見る別の小さなタスクを探します。このアプローチには、特に誰も特定しないという利点があり、すべての人にとってより受け入れやすくなります。
- 懲戒処分を使用。チームの規模と会社の規模に応じて、さまざまな形をとることができます。
- 開発者を解雇します。不良リンゴの保管にはコストがかかります。これまでのところ、開発者は仲間の開発者を気にせず、すでに人の問題を抱えています。作業環境が汚染された場合、この単一の悪い開発者よりもはるかに多くの損失を被る可能性があります。
他のヒント
コードレビューを行うことができる場合-それはそれをキャッチするのに最適な場所です。
イテレーショントランクにマージする前にレビューが必要なので、通常はすべてがキャッチされます。
儀式的なbe打!バグごとに、むち打ち症が1本!
(それを手に入れない人のための冗談)
自分のコードをめったにテストしない開発者として、私は自分の行動をゆっくりとシフトさせた1つのことを話すことができます...
可視性
環境がコードのプッシュを許可し、ユーザーが問題を見つけるのを待ってから、「今はどうですか?」コードを変更した後、独自のものをテストする本当のインセンティブはありません。
コードレビューとコラボレーションにより、同僚が「ウィジェットY」と「ウィジェットZ」で作業している間に「ウィジェットX」を配信する場合よりも、高品質の製品を作成するように努力することができます
作品が目立つほど、その作品がどれだけうまく機能するかを気にする傾向があります。
コードレビュー。毎週月曜日の朝にすべての開発者を部屋に入れて、前週からの最も誇り高いコードベースの成果を彼らと一緒にミーティングに持ってくるように頼んでください。
彼らにスポットライトを当て、彼らが何をしたかを説明することに興奮してもらいましょう。他の開発者が彼らが話していることを見ることができるように、彼らにコードのコピーを持ってきてもらいます。
このプロセスは数か月前に開始しましたが、無意識のうちに行われる品質チェックの量を見ると驚くことです。結局のところ、開発者が単に最も興奮していることについて話すように頼まれた場合、彼らは自分のコードを人々に見せることに完全に興奮するでしょう。その後、他の開発者は品質エラーを確認し、なぜ間違っているのか、代わりにコードを実際に記述する方法を公開で話し合います。
これで開発者が高品質のコードを記述できない場合、彼はおそらくあなたのチームに適していません。
年次レビューの目的の一部にしましょう。彼がそれを達成しなければ、昇給はありません。
誰かがあなたのチーム/環境に適していないことを受け入れる必要がある場合もありますが、それは最後の手段であり、対処するのが難しい場合がありますが、他のすべてのオプションを使い果たした場合は、長期的に。
開発者に、2週間以内に慣行の変更を確認したい場合は、会社の懲戒手続きを開始するよう伝えます。できるだけ多くのヘルプとサポートを提供しますが、この人を変更できない場合、彼はあなたの会社に適していません。
Cruise Controlまたは同様のツールを使用して、チェックインでビルドとユニットテストを自動的にトリガーできます。それでも、彼が追加する新しい機能の単体テストがあることを確認する必要があります。これは、彼のチェックインを見ることで実行できます。 ただし、これは人間の問題であるため、技術的な解決策はこれまでにしかできません。
なぜ彼と話をしないのですか?彼はおそらく実際にあなたを噛まないでしょう。
-
彼を" babysit"にするビルドし、ビルドマネージャーになります。これにより、コードを開発する時間が減り(したがって、すべてのユーザーのパフォーマンスが向上します)、優れたビルドが必要な理由を彼に教えることができます。
-
テストケースの実施-ユニットテストケースなしではコードを送信できません。ビルドシステムを変更して、テストケースが正しくコンパイルおよび実行されない場合、または存在しない場合、タスクチェックイン全体が拒否されるようにします。
-アダム
開発者ごとのテストコードカバレッジに関する統計情報を公開します。これは、開発者と話し合った後のことです。
海の小屋からのいくつかのアイデアがあります。
Intro
What shall we do with a drunken sailor, (3×)
Early in the morning?
Chorus
Wey–hey and up she rises, (3×)
Early in the morning!
Verses
Stick him in a bag and beat him senseless, (3×)
Early in the morning!
Put him in the longboat till he’s sober, (3×)
Early in the morning!
など「酔っぱらいセーラー」を交換「ずさんな開発者」と一緒に。
使用しているバージョン管理システムのタイプに応じて、チェックインを許可する前に特定の要件をコードに強制的に適用するチェックインポリシーを設定できます。 Team Foundation Serverなどのシステムを使用している場合は、チェックインのコードカバレッジ要件と単体テスト要件を指定できます。
ご存知のように、これは彼を独り占めするのを避ける絶好の機会であり(彼と話をする必要があることに同意しますが)、社内でテストファーストプロセスを実装します。ルールが明確ではなく、期待がすべての人に知られている場合、あなたが説明することはそれほど珍しいことではないことがわかりました。テストファースト開発スキームを実行することは私にとってうまく機能し、コードの品質が向上することがわかりました。
品質よりも速度に重点を置いている可能性があります。
これにより、一部の人々は問題を急いでリストをクリアし、後でバグレポートに戻ってくるものを見るように誘惑する可能性があります。
このバランスを修正するには:
- 問題追跡システムで一度にいくつかのアイテムのみを割り当てる
- レビューをコーディングし、「完了」したものをテストします。問題があればすぐに戻ってきます
- アイテムが適切に実行されるまでにかかる時間についての期待について話します
Peerプログラミングも可能です。また他者開発者のチーム金型の品質基準を知って手続きをしていることからbenifits:
- あなたの開発その肩をたどのように生活をしているかを知るのは彼のコードとコードの昇
- その他の開発を実施できる試験の最初の方針を許可しないコードに書き込まれるまでの試験のために書かれていたので
- 同様に、その他の開発者であると確認コードが標準で付reduicingのnmberの不良チェックイン
すべてのこのコースを必要と当社は、デベロッパーに耳を傾けるこのプロセスすることはできません。.
人々は、この問題に対して多くの想像力に富んだ不正な答えを思いついたようです。しかし、実際には、これはゲームではありません。 「名前と恥」に精巧なピア圧力システムを考案する彼は問題の根本に到達するつもりはありません。なぜ彼はテストを書いていないのですか?
あなたは直接であるべきだと思います。あなたは彼と話をしたと言っているのを知っていますが、彼がテストを書いていないのはなぜかを見つけようとしましたか?明らかにこの時点で彼は自分がすべきであることを知っているので、確かに彼が彼に言われたことをしていない何らかの理由がなければならない。怠ですか?怠慢?プログラマーはエゴと強い意見で有名です。おそらく、テストは時間の無駄である、または彼のコードは常に完璧であり、テストを必要としないと、何らかの理由で確信しているでしょう。彼が未熟なプログラマーである場合、彼は自分の行動の意味を完全に理解していないかもしれません。彼が「成熟しすぎている」場合彼はあまりにも彼の方法で設定されているかもしれません。理由が何であれ、対処します。
意見の問題になった場合、自分の個人的な意見を脇に置き、規則に従う必要があることを彼に理解させる必要があります。彼がルールに従うことを信頼できない場合、彼が置き換えられることを明確にしてください。それでも彼がそうしないなら、それをしてください。
最後に、すべての議論と、彼の変更の結果として発生する問題を文書化します。最悪の事態になると、決定を正当化することを余儀なくされる場合があります。その場合、文書による証拠を持っていることは確かに貴重です。
彼自身の開発ブランチに彼を貼り付け、完全にテストされていることがわかっている場合にのみ、彼のものをトランクに持ち込みます。これは、GITやMercurialなどの分散ソース管理ツールが優れている場所かもしれません。 SVNの分岐/マージのサポートが強化されていますが、それを管理するのにそれほど苦労はないでしょう。
編集
これは、彼を取り除くことができない場合、または彼に彼の方法を変えるようにさせることができない場合のみです。 (変更または発砲によって)単にこの動作を停止できない場合は、コーディングの悪影響からチームの残りの部分をバッファリングすることが最善です。
ポリシーに影響を与えることができる場所にいる場合は、いくつかの変更を加えます。チェックインの前にコードレビューを行い、テストを開発サイクルの一部にします。
非常に単純なようです。それを要件にし、それができない場合は、彼を交換してください。なぜ彼を飼うのですか?
私は通常、他のすべてが失敗しない限りこれを支持しません...
時々、開発者ごとのバグカウントの公開されたチャートは、好ましい結果を得るために十分な仲間の圧力をかけることができます。
ニンジンを試して、楽しいゲームにしてください。
例:ハドソンの継続的インテグレーションゲームプラグイン
http://wiki.hudson-ci.org/ display / HUDSON / The + Continuous + Integration + Game + plugin
お入れ開発者に支店コードに基づき、一部ロジックのように、特徴、問題を修正し、発チームなどを実行します。その後不良チェックインでき離れます。時間は、合併による試験支店、問題を解決し、ソリリースをメインです。
削除権利コミットが開発者として送信コード、若い開発者のための審査及び試験のさらに上げることができます。う促す"と変更。
コードにエラーが見つかったレポートを、そのソフトウェアを担当したプログラマーの名前でまとめることができます。
彼が合理的な人物である場合は、レポートについて彼と話し合います。
「評判」が気になる場合レポートを定期的に発行し、同僚全員が利用できるようにします。
「権限」のみを聞いている場合は、報告を行い、問題をマネージャーにエスカレートします。
とにかく、私は、人々が外からどれほど悪いように見えるかに気づかれると、彼らの行動を変えることをしばしば見ました。
これは xkcdで読んだものを思い出させます:)
チェックイン前に自動化された単体テストを書くのですか、それとも手動で単体テストを書くのですか?
ショップが自動化されたテストを作成していない場合、動作しないコードのチェックインは無謀です。チームに影響はありますか?正式なQA部門がありますか?
すべて自動化された単体テストを作成している場合は、コードレビュープロセスの一部に単体テストも含めることをお勧めします。レビュー中に、コードが規格ごとに受け入れられないことが明らかになります。
あなたの質問はかなり広範ですが、何らかの方向性を提供したいと思います。
最初のステップは個別に彼と話をし、品質の重要性を説明することだとフィルに同意します。品質の低さは、多くの場合、チーム、部門、および企業の文化に関連しています。
何かが「完了」と見なされる前に、実行可能なテストケースを成果物の1つにする
テストケースを実行していない場合、作業は完了していません。また、テストケースの実行を文書化する前に期限が過ぎた場合、彼は時間通りに配信されず、結果は次のようになります。彼が開発を完了していない場合。
あなたの会社の文化がこれを許さず、正確さよりもスピードを重視する場合、それがおそらく問題の根本であり、開発者は適切なインセンティブに単純に応答しています-正しいものが少なくなるのではなく、多くのものが半ば嫌われました。
人にトイレをきれいにしてもらいます。陸軍で働いた。そして、たくさんのインド料理を食べる人と一緒にグループで働くなら、彼らが列に並ぶのに長くはかからないでしょう。
しかし、それは私だけです...
開発者がコンパイルされていないものをチェックするたびに、いくつかのお金をjarに入れます。チェックインする前によく考えてください。
残念ながら、すでに何度も彼と話をしていて、彼に書面で警告を与えたなら、チームから彼を排除する時が来たと言えます。
ここで役立つ答えを見つけることができます:ジュニアプログラマーにテストを作成させる方法