Kunoichi Marketドキュメント

1章: WordPress におけるテストとは

テストの辞書的な意味は『スーパー大辞林』によれば次の通りです。

① 物事の良否・能力などを調べるために試すこと。試験すること。検査。審査。「飛行―」「試作品を―する」「―に合格する」

② 特に,学力を知るための試験。「学期末―」

プログラミングにおけるテストは、まさにこの「品質検査」の意味合いが大きいでしょう。つまりWebサイトが目的とする品質に達しているかの検査となることを意味します。では、「Webサイトの品質」とはなんでしょうか。デザインが優れていることでしょうか。それとも、コンテンツが面白く膨大なアクセスを稼げることでしょうか。もしくは、堅牢なセキュリティを誇り、絶対にハックされないことでしょうか。

もちろん、そうしたことが担保できればそれに越したことはないのですが、Webサイト開発においてテストが重要とされるのは、品質の検査それ自体ではなく、品質検査が繰り返される状態で開発を続けるメリットが大きいからだと言えます。

かつてティム・オライリーがソフトウェア開発の状況を「永遠のβ版」という言葉で的確に言い表したように、Webサイト開発もまた継続的に改修が行われます。バグの修正、新しい機能の追加、新機能によって生まれたバグの修正……。そうしたことを繰り返す行為そのものがWebサイト開発だといっても差し支えありません。こうした目まぐるしく変化する状況において、テストには次のようなメリットがあります。

  • 新しい機能の追加が意図しない結果を生まないことを保証できる。
  • 品質を担保する指標がテストによって明文化される。
  • 繰り返し実行でき、非属人化・自動化することができる。
  • 結果的に全体的な品質が向上する。

もちろん、テストにはデメリットもあります。それは、「テストを作らないといけない」ことです。開発の現場では「工数」という概念があり、なにかを開発するとそれに応じて時間がかかります。当然、単体の機能で考えれば、テストを作らない方が時間は少なくて済みます。しかしながら、Webサイトという複雑なものを開発する場合、テストを作っておいた方が将来的にかかる時間は節約できるでしょう。

テストの目的をはっきりさせる

後述するように、テストにはいくつかの種類がありますが、テストを導入する目的は品質を担保することです。そのためには、一種類のテストを完璧に仕上げるよりも、複数のテストを組み合わせた方が効果的です。また、すべてを完全にテストすることは不可能だということも覚えておくべきでしょう。時間や予算などの様々な制約の中で最適なテストの組み合わせを選んでください。

テストそのものについて説明する前に、WordPressサイトの具体的な例で考えてみましょう。ひとくちにWordPressといっても、想定される状況は次のように多岐に渡ります。

開発者利用者製作する対象重要な指標
受託会社出版社Webメディア大量のページビュー
個人開発者WordPressユーザープラグイン多様な環境で動作する
デザイナー銀行テーマ信頼感のある見栄え
受託会社超大企業サイト問題が起きないこと
花屋さん自分サイトお客さんが沢山くる

そう、カフェのオーナーだったら、と想像してみてください。カフェの運営という本業がある中で品質を高める方法は、自身でテストを書くことではなく、よくテストされたテーマやプラグインを利用することなのです。くれぐれも、この本質を見誤らないようにしてください。もっとも、テストに興味を持つカフェのオーナーはかなり専門的な知識を持っていることが想定されますが。

テストの種類

それでは具体的にテストの内容について触れましょう。様々なテストがありますが、本書では便宜的に以下の3つにわけて説明します。

単体テスト

「ユニットテスト」などと呼ばれる単体テストは、基本的にプログラミング言語のためのテストです。対象とするものも関数やクラスなど、そのプログラミング言語で使われる機能の単位に応じたものです。本書ではPHPとJavaScriptにおける単体テストを紹介します。

e2eテスト

e2e(End to End)テストは単体テストと異なり、「結合テスト」と呼ばれる手法の1つです。基本的にはWordPressサイトを実際に立ち上げ、ユーザーがそれを操作するのと同じようにテストを行います。たとば、「ログイン画面は正しく動作するか」といったことを検証するためのテストです。

モックアップテスト

モックアップテストは、Webサイトの「ハリボテ」を用意し、それをもってテストすることです。もちろん、すぐれたハリボテを用意できれば品質が向上します。テーマやプラグインなど、様々な環境で利用されることが想定される開発では優れたモックアップが必須となります。スナップショットと組み合わせることで、「デザインが崩れていないか」などの高度な品質管理が可能になります。

この他、サイトの耐久力を試す負荷テストなどもありますが、本書では触れません。

継続的インテグレーション

テストにはいくつかの種類があり、その組み合わせで品質が高まることはすでに述べました。さらに品質を高めるには、それらのテストを自動的・再帰的に実行することです。2019年現在、多くのソフトウェアがGitHubやBacklogなどのプラットフォーム上で、Gitなどのバージョン管理ツールによって管理されていることでしょう。コミットするたびにこれまで蓄積してきたすべてのテストが自動的に実行され、テストに失敗したときだけレポートがメールで届くような状態になっていることが理想です。

本書ではCircleCIというサービスをベースに継続的インテグレーション(CI = Continuous Integration)の方法および自動リリースについて説明します。


それでは、早速テストの具体的なやり方に入りましょう。

この続きは会員登録後お読みいただけます。
こちらから会員登録をお願いします。

会員登録後、ログインいただきますと下記のボタンから2章以降をお読みいただけます。