目次
問題を見つけて時間を節約する
自己録音
代码的语言
结论
ホームページ CMS チュートリアル &#&プレス 単体テスト理論 (続き): パート 2

単体テスト理論 (続き): パート 2

Sep 02, 2023 pm 02:37 PM

单元测试理论(续):第 2 部分

前回の記事では、WordPress における単体テストの理論について説明し始めました。具体的には、単体テストのテーマとプラグインに関する作業をレビューし、次にコードユニットの議論に移り、それがテストにどのような影響を与えるか、そしてソフトウェア開発のより大きな世界における単体テストをレビューします。

WordPress における単体テストの理論について、問題の特定、アーキテクチャの推進、プロジェクトの文書化などにどのように役立つかという観点から引き続き説明していきます。


問題を見つけて時間を節約する

このシリーズの前の内容を思い出してください。単体テストの従来の方法は次のとおりです。

  • テストを作成し、実行します (失敗することを承知で)
  • このメソッドを通過させる関数を作成します。
  • テストを実行します。テストが失敗した場合は関数の作業を続行し、失敗した場合は次の関数に進みます。

はい、最初のステップは少し独断的です。失敗するとわかっていることを実行するのに時間を無駄にする必要はありません。しかし、要点はわかります。しかし、この特定のテクニックを開発に適用し始めると、コードを書くときに特定のリズムが生まれ、それが全体の目標の一部であることがわかります。

しかし、それは半分にすぎません。実際、単体テストは開発の初期段階で問題を発見するのに役立ちます。

これを理解するには、このアイデアを確認するのが最善です。

実際に WordPress ダッシュボードにログインせずにユーザー アカウントを作成できるようにする WordPress ベースのプロジェクトの機能を開発しているとします。これは、登録、必要な検証、およびパスワードと電子メールを生成するためのコードを処理するページ テンプレートを設定していることを前提としています。

あなたはブラウザにページをロードし、同じ電子メール アドレスを持つユーザー、間違ったパスワードを持つユーザー、不正な文字を含むユーザーなどを作成しようとします。お分かりかと思いますが、合格か不合格かを確認する方法は複数あります。これはとてもひどいです!つまり、ユーザー登録機能を変更するたびに、問題が発生しないように同じ n 回の登録を実行する必要があります。

または、これを処理する一連のテストを作成し、コードが変更されるたびに実行することもできます。

そうです、単体テストの作成には多くの時間がかかることがありますが、コードの単位を変更するたびに節約される時間を見てください。これはそれだけの価値があり、誰かがテストの 1 つの順列をモックするのを忘れたために見逃されていた可能性のある問題を早期 (つまり、運用環境にリリースする前) に発見するのに役立ちます。


自己録音

単体テストを作成するときは、コードが実際に機能することを確認してコードの品質を向上させるだけでなく、基本的に開発者向けのドキュメントも提供します。

製品に組み込まれた機能の単体テストを行う場合は、その機能がどのように動作するか、いつ失敗するか、いつ成功するかに関するドキュメントを提供します。

これにはいくつかの前提条件が含まれます。具体的には、関数とそれに関連するテストに論理的に名前を付けてグループ化しており、各関数を正しくテストしているということです。

PHPUnit を使用すると、WordPress 単体テストで読みやすいアサーションを簡単に実行できます。プロジェクトを構成する関数で使用可能なassertTrue、assertFalse、またはその他のアサーションを宣言するだけです。

上記の例に従うと、空の電子メール アドレスで登録しようとしたときにユーザー登録関数が確実に失敗するように関数を作成できることを意味します。

リーリー

単純な例かもしれませんが、重要な点は変わりません。コードは自己文書化され、明確な単体テストを記述するだけで済みます。


###建築###

おそらく、単体テストの最も過小評価されている利点の 1 つは、プロジェクトのアーキテクチャの推進に役立つことです。通常、テーマまたはプラグインの開発は、次の 2 つの方法のいずれかで開始できます。

関数をリストし、ユーザー インターフェイスを描画し、コードを記述します

    ファイルがどのように連携するかを図にしてコードを記述します
  1. これらは本質的に悪いことではありませんが、弱いと思います (私が共有したい以上のことをしていることを最初に認めます!)。しかし、「コードを書く」というステップには多くの責任が伴います。

これは、長い間コーディングをしている人にとっては非常に馴染み深いものであるため、最終的には「ああ...私はそれを考えていませんでした」と気づくでしょう。

運が良ければ、これは通常、無視したケースを処理するヘルパー メソッドまたは別の条件を作成できることを意味しますが、最悪の場合、クラス全体または関数セット全体を再設計しなければならない可能性があることを意味します。この問題を解決するもの。

単体テストは、完璧ではありませんが、この状況を軽減するのに役立ちます。

最初から、テーマまたはプラグインに提供したいすべての機能のリストがあるという事実を考慮してください。コードはまだ何も書いていませんが、何らかの種類の UI スケッチやクラス図のセットはあるかもしれません。

接下来,您开始编写要编写的测试以测试您的项目。回想一下,单元测试的一部分是将代码分解为尽可能的原子单元,因此您的任务是为每个单元编写单元测试,咳咳

由于单元测试的性质,您本质上会以不同的方式思考您的代码:您正在考虑“编写测试”,而不是“编写代码”,并且因为您必须在更原子的级别上进行思考,您会情不自禁地考虑经常被归入“编写代码”的边缘案例。


代码的语言

作为开发人员,我们非常习惯使用不断强化我们编写代码的约定。我的意思是,我们倾向于提供缩写的变量名称、神秘的函数名称和类名称,这些名称对于您自己或项目团队之外的任何人来说可能没有任何意义。

单元测试不一定是编写更易于阅读的代码的关键,但它可以进一步帮助提供更清晰的函数名称。

回想一下您读过的第一本编程书、您参加的第一堂计算机科学课或者您看到的第一段开源代码,方法名称通常是动词。为什么他们不应该这样?方法是封装代码的方法,做一些事情。但随着我们在项目上工作的时间越来越长,我们变得越来越懒,我们的代码从“register_user_and_email_password()”变成“new_account()”。

显然,前者比后者更清晰,但如果我们致力于高质量的单元测试,并且希望确保我们的单元测试易于阅读,为了使它们易于阅读,我们的函数名称必须易于阅读。

这不是更容易阅读吗:

$this->assertFalse( register_user_and_email_password( '' ) );
ログイン後にコピー

而不是这个?

$this->assertFalse( new_account( '' ) );
ログイン後にコピー

同样,这也许是一个简单的示例,但原则仍然是:编写良好的单元测试,以帮助自我记录驱动函数语言的代码。


结论

我们已经讨论了单元测试的基础知识以及主要优点,但是我们还没有讨论单元测试带来的缺点,我们甚至还没有考虑如何将其合并到我们的项目中。工作流程。

因此,在下一篇文章中,我们将尝试做到这一点。

以上が単体テスト理論 (続き): パート 2の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

WordPressは初心者にとって簡単ですか? WordPressは初心者にとって簡単ですか? Apr 03, 2025 am 12:02 AM

WordPressは、初心者が簡単に始めることができます。 1.バックグラウンドにログインした後、ユーザーインターフェイスは直感的であり、シンプルなダッシュボードは必要なすべての関数リンクを提供します。 2。基本操作には、コンテンツの作成と編集が含まれます。 WysiWygエディターは、コンテンツの作成を簡素化します。 3.初心者は、プラグインとテーマを介してウェブサイトの機能を拡張でき、学習曲線は存在しますが、練習を通じて習得できます。

ワードプレスは何に適していますか? ワードプレスは何に適していますか? Apr 07, 2025 am 12:06 AM

wordpressisisgoodforvirtalayanywebprojectoitsversitilityasacms.itexcelsin:1)ユーザーフレンドリー、柔軟性と柔軟性と顧客化の維持、およびプルージンの数値化; 3)seooptimization;

WixまたはWordPressを使用する必要がありますか? WixまたはWordPressを使用する必要がありますか? Apr 06, 2025 am 12:11 AM

WIXは、プログラミングの経験がないユーザーに適しており、WordPressは、よりコントロールと拡張機能を必要とするユーザーに適しています。 1)WIXはドラッグアンドドロップエディターとリッチテンプレートを提供しているため、Webサイトをすばやく構築できます。 2)オープンソースのCMSとして、WordPressには巨大なコミュニティとプラグインエコシステムがあり、詳細なカスタマイズと拡張をサポートしています。

なぜWordPressを使用するのはなぜですか? なぜWordPressを使用するのはなぜですか? Apr 02, 2025 pm 02:57 PM

人々は、その力と柔軟性のためにWordPressを使用することを選択します。 1)WordPressは、さまざまなWebサイトのニーズに適した、使いやすさとスケーラビリティを備えたオープンソースのCMSです。 2)豊富なテーマとプラグイン、巨大なエコシステム、強力なコミュニティサポートがあります。 3)WordPressの作業原則は、テーマ、プラグイン、コア関数に基づいており、PHPとMySQLを使用してデータを処理し、パフォーマンスの最適化をサポートします。

WordPressの費用はいくらですか? WordPressの費用はいくらですか? Apr 05, 2025 am 12:13 AM

WordPress自体は無料ですが、使用するには余分な費用がかかります。1。WordPress.comは、無料から支払いまでの範囲のパッケージを提供し、価格は月あたり数ドルから数十ドルまでの範囲です。 2。WordPress.orgでは、ドメイン名(年間10〜20米ドル)とホスティングサービス(月額5〜50米ドル)を購入する必要があります。 3.ほとんどのプラグインとテーマは無料で、有料価格は数十から数百ドルです。適切なホスティングサービスを選択し、プラグインとテーマを合理的に使用し、定期的に維持および最適化することにより、WordPressのコストを効果的に制御および最適化できます。

WordPressはまだ無料ですか? WordPressはまだ無料ですか? Apr 04, 2025 am 12:06 AM

WordPressのコアバージョンは無料ですが、使用中に他の料金が発生する場合があります。 1。ドメイン名とホスティングサービスには支払いが必要です。 2。高度なテーマとプラグインが充電される場合があります。 3.プロフェッショナルサービスと高度な機能が請求される場合があります。

WordPressはCMSですか? WordPressはCMSですか? Apr 08, 2025 am 12:02 AM

WordPressはコンテンツ管理システム(CMS)です。コンテンツ管理、ユーザー管理、テーマ、プラグイン機能を提供して、Webサイトコンテンツの作成と管理をサポートします。その実用的な原則には、ブログから企業Webサイトまで、さまざまなニーズに適したデータベース管理、テンプレートシステム、プラグインアーキテクチャが含まれます。

WordPressを3日で学ぶことはできますか? WordPressを3日で学ぶことはできますか? Apr 09, 2025 am 12:16 AM

3日以内にWordPressを学ぶことができます。 1.テーマ、プラグインなどのマスター基本知識。2。インストールや作業原則などのコア関数を理解します。 3.例を使用して、基本的および高度な使用法を学びます。 4.デバッグテクニックとパフォーマンスの最適化の提案を理解します。

See all articles