ホームページ バックエンド開発 PHPチュートリアル バグを修正するための 12 の重要な手順

バグを修正するための 12 の重要な手順

Nov 26, 2016 am 09:31 AM
bug php

上司: それで、このバグを修正するのにどれくらい時間がかかりますか?

経験の浅いプログラマー: 1 時間ほどいただけますか?せいぜい2時間くらいでしょうか?すぐにできるよ!

経験豊富なプログラマー: こう言ってみませんか、魚を捕まえるのにかかる時間と同じくらい時間がかかりますか? !

バグの修正にどれくらいの時間がかかるかを事前に知るのは難しく、特にコードに慣れていない場合、状況はさらに混乱するでしょう。 James Shore は、著書「The Art of Agile」の中で、問題を解決したい場合は、まず問題が何であるかを知る必要があると明確に指摘しています。時間を正確に見積もることができない理由は、核心を見つけるのにどれくらいの時間がかかるかがわからないためです。これを知ることによってのみ、バグの修正にかかる時間を合理的に見積もることができます。しかし、この時期、ニッコウキスゲはもう寒いのではないかと思います。 Steve McConnell はかつてこう言いました:

「問題を見つける - 問題を理解する - これがプログラマーの仕事の 90% です

多くのバグはコードの特定の行を変更するだけで済みます。」しかし、多くの時間がかかるのは、何が正しいのかを後で理解する必要があることです。釣りをするときと同じように、どこに餌を置くか、いつ魚が餌を取りやすいかなどを知る必要があります。バグには 4 つのタイプがあると言われています。1 つ目は見つけやすく修正しやすいもの、2 つ目は見つけにくく修正しやすいもの、3 つ目は見つけやすく修正しにくいもの、4 つ目は見つけやすく修正しやすいものです。タイプは見つけるのが難しく、修正するのが困難です。最も悲劇的なのは最後のタイプで、「探しても探しても、荒れ果てて荒れ果てている」だけでなく、苦労の末にようやく石を突き破ったとしても、無意識のうちにそこを引っ掻くだけで、 「道は長い、長い」と力なくため息をつきます。リリースされたばかりのコードでない限り、バグを探すことは、目の見えない人が象を探しているようなものであると言えます。混乱して、どのバグのタイプに属しているのかわかりません。

バグを修正するための 12 の重要な手順

バグの発見と修正

「バグの発見と修正」の意味を知っていますか?そうだ、デバッグだ!絶え間ないデバッグ、無数のデバッグ! Paul Butcher は広範な研究を通じて、次の構造化された手順を要約しました:

1. 目的を明確にする。例外レポートを注意深く確認してバグかどうかを判断し、さまざまな有益な情報を見つけて問題の核心を見つけて再現します。レポートとの重複がないか再度確認してください。重複が発生した場合は、関係者がどのように対処したかを確認してください。

2. 準備 - 正しいコードを見つけて、消去法で作業領域をクリーンアップします。

3. テスト環境に合わせます。お客様がコンピュータの設定を行っている場合は、このプロセスを省略できます。

4. コードの目的を明確にし、既存のテストツールですべてが適切に動作することを確認します。

5. さて、釣りに行きましょう - エラーを再現して診断します。再現できない場合は、修理作業を行ったことを証明できません。

6. テストケースを書くか、既製のテストケースを通じてバグをキャッチします。

7. 修復モードに入ります - 他の部分に影響を与えないことを確認してください。ただし、修正を開始する前に、リファクタリングを実行すると、恐れることなくコードをいじることができるため、リファクタリングを実行することをお勧めします。また、回帰後のテストにより、新しいバグが追加されないことを確認することもできます。

8. コードを整理します。段階的なリファクタリングにより、コードをより理解しやすく、より安全にします。

9. 他の人を見つけて検討してください。そうすれば当局は混乱し、傍観者は理解するでしょう。

10. この修復プロセスをもう一度確認してください。

11. これらのバグが他のブランチに影響を与えるかどうかを確認するために、メインラインから始めないようにしてください。これらの変更をマージし、コードの相違点を処理し、すべてのレビューとテストを確認します。

12. 考える。何がうまくいかなかったのか、そしてその理由をよく考えてください。なぜ修正が機能するのでしょうか?この種のバグは他にどこに現れるでしょうか?アンディ・ハント氏とデイブ・トーマス氏も、著書『The Pragmatic Programmer』の中で、「バグによって多大な時間がかかる場合は、必ずその理由を突き止めてください」と指摘しています。さらに、将来同じような問題に遭遇しないように、経験や教訓からどのように学ぶかを考える必要もあります。また、私たちが使用する方法やツールに改善できる点はあるでしょうか?これらのバグの影響と深刻度。

バグの発見と修正ではどちらの方が時間がかかりますか?

おそらく、テスト環境をセットアップし、問題を再現し、バグをテストするのに必要な時間は、バグを見つけてバグを修正する時間よりもはるかに長いでしょう。ただし、明らかなバグが少数であれば、見つけるのは簡単ですが、修正するのは理想的ではない可能性があります。

『ソフトウェアの作成』という本の中で、主に「ほとんどのソフトウェアの脆弱性の原因」について議論している章があり、ドウェイン・ペリーは、修復に比べてバグの発見(バグの理解とバグの再現を含む)にかかる時間が長いと分析しました。調査によると、ほとんどのバグ (ほぼ 3/4) は見つけやすく、修正も簡単であることが示されています。所要時間は 5 日以内です (これは、強力な SDLC、広範なレビューとテストによる大規模なリアルタイム システムに基づいています)。しかし、たとえ簡単に捕まえることができたとしても、それを修正するのに苦労する必要がある非常に不快なバグもあります。

発見/修復 修理時間5日

問題を再現できる 72.5% 18.4%

再現が難しいまたは不可能 5.9% 3.2%

つまり、あなたは間違いなくバグをすぐに修正し、ほとんどの場合あなたが正しいときは。しかし、賭けに負けたとき、それはあなたが大きな問題に直面していることを意味します。

それでは、次回、上司にいつバグが修正されるのかと尋ねられたら、愚かにも「すぐに修正されます」と答えないでください。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

See all articles