test
Selenium
regression

システム品質が低くて悩んでいませんか?品質を維持するためにコストをかけ過ぎていませんか?

システムにまつわる悩み事

テストが足りずシステム品質が低い!
(だけど)きちんとテストをするとコストがかかる!
(だから)そんなリソースうちにはない!
経営者は開発スピードを上げろと煽ってくる!

autodraw 2017_11_19 11_12_53.png

システム品質を高めるには、テストケースの網羅性を高くすればよいのですが、網羅性を高くすればするほど時間・コストがかかります。
このような悩みをよく聞く一方で、テスト負荷が低く毎日定時で帰る会社もあります。
この違いは何でしょうか?

リグレッションテスト(回帰テスト)とは?

新規機能や改修箇所が既存機能に悪影響を与えていないかテストをします。
このようなテストをリグレッションテスト(回帰テスト)といいます。
怠ると、改修箇所以外で不具合があった場合にみつけられません(いわゆるデグレート)。

autodraw 2017_11_19 10_21_33.png

リグレッションテストは機能が追加されればされるほど増えます。
また、場合によってはOSやブラウザやハードウェアを考慮する必要があります。
同じようなテストの繰り返しなので、テストをするのは非常に苦痛です(少なくても私はやりたくありません)。

マネジメント視点(コスト管理視点)のリグレッションテストの課題

網羅性を高めたリグレッションテストを人の手でやると時間がかかり、コストが増えます。
特に、運用時にかかるリグレッションテストのコストは、開発時にかかるコストに比べて高くつきます。

図1.png

50万円/人月のテスターを5人入れて、月に250万円かかっている…ということはありませんか?
ランニングコストは頭が痛い問題です。

プログラマ・テスターの視点

テストケースを充実させても、テストをする人により認識のばらつきがあったり、ミスをしたりします。
かといって、テストケースを減らせば不具合が多いシステムになります。

autodraw 2017_11_19 10_11_36.png

面倒でコストがかかるリグレッションテストは自動化してしまえ

網羅的にテストしつつ、コストを抑え、リグレッションテストをする方法があります。
自動化すれば良いのです。

Seleniumはオープンソースであり、無料で使えます。
各ブラウザのドライバーも無料で公開されています。

公式の開発言語は下記の5つです。
1. Java
2. Ruby
3. Python
4. C#
5. Node.js

どの言語を利用するかは、チームのスキル、既存システムに利用されている言語などを基に決めれば良いと思います。
Webアプリケーションを前提に考えれば、JavaScriptを扱える技術者が一番多いのではないでしょうか?
そう考えると、Node.jsが汎用性が高いといえます。

【余談】CI/CDの1ピースであるリグレッションテスト

リグレッションテスト以外にも、ビルド・デプロイ・リリースも負荷が高く、悩ましい課題です。
これらも自動化することでコストが下がり、システム品質は向上します。
ざっくりいうと、これらを自動化することをCI/CDといいます。
CI/CDを全て一気にやろうとすると、どこから手をつけていいかわからなかったり、必要な技術が異なります。以前と比べてAWSなどのクラウドを使うことで、簡単に構築できるようになりましたが、それでも大変です。
リグレッションテスト自動化はPC1台あれば始められます。サーバなどを用意する必要もありません。
かつ、費用対効果は非常に高いです。

目次

  1. システム品質が低くて悩んでいませんか?品質を維持するためにコストをかけ過ぎていませんか?
  2. Node.jsをMac OSにインストール 動画付き!
  3. Seleniumのプラクティス
  4. Tips