見出し画像

テストは何のためにやっている?

私は、テストが嫌いです。

特に、暗記系科目は本当にダメですね。そんなことを言っていると、大概の筆記テストが最悪な状態になります。資格には必ず筆記テストがありますが、散々な結果になりそうなので取得できないだろうな・・と思っています(遠い目)。

筆記テストは、「(短期的な)記憶力が良い人」と「覚えるのが上手な人」が高得点を取るというものだと、認識しています。学生の時ぐらいしか、そういった力を磨く機会はないと思うので、脳トレと割り切って勉強するのもありですね。

さて、本日書こうと思っているのは「テスト」ではあるのですが、「仕事で使っているテスト」に関してです。

エンジニアがやっているテスト

テストの対象は、私たちではありません。
実際に手を動かしているのは私たちの可能性がありますが、実際に〇×がつけられるのは、プログラムに対してです。

システムエンジニアには、作ったモノに対する責任があります。

・ちゃんと想定通りの動作をするのか?
・想定しない値を入れられても問題ない形で動作をするか?
・悪意ある攻撃をされても対処されているか?
・etc...

そういったことを確認し問題がないことを保証するために、テストを行います。

テストの方法には、大きく2つあります。

・実際に手を動かして確認をする方法
・コーディングで自動的に確認する方法

確認をする作業は、大事なものですがつまらないもの でもあると思います。
そういったつまらない作業は、極力自動的に、すぐに終わらせたいですね。

しかも、一度実施したテストはその一回で終わるわけではなく、同じような確認作業を行う場面もあります。修正や機能追加があった時に影響がないかを確認するためです。

そういうことを書いていると、「コーディングで自動的に」やった方が良い気持ちになってきますね。

コーディングテストのデメリット

自動的に実行されるテストは、メリットばかりではありません。もちろん、デメリットもあります。

1. コーディングをする時間がかかる
2. 実装自体に修正があった場合、コーディングの修正も必要
3. コーディングが間違えていたらテストの意味がない

つまり、「自動的にするための時間がかかる」わけです。

コーディングは書かれている命令、処理のまま。その通りの動作しかしません。だからこそ、影響範囲がないかを確認するような「念のための確認」という状況では有利に働きます。

また、テスト自体や検証する内容が間違っていれば、そのままになる可能性もあります。

メリットとデメリットを把握して使いこなす

一つの考え方になりますが、こういう基準で分けても良いかもしれません。

1. 頻繫に変更が発生する ⇒ 手を動かすテスト
2. あまり変更がない機能 ⇒ 自動実行のテスト

その場面に合った方法を見極めて、実施できると良いですね。


・・作業にはどうしても、時間がかかります。

画像1

やりたいこと に対して、最小限の時間と最小限の労力で成果を出す

画像2

これが出来ると良いですね。そのためには、

何故その作業をやるのか。
3か月後がどうなるのか。

を考えながら作業を行うことを心掛けることをオススメします。


私はコーディングによるテストを行う機会は多いのですが、その意義を忘れ、検証内容も足りずに、ただ時間だけを消費しているものと遭遇することも多々あります・・。
皆さんがせっかく作業をしたものが、無駄にならないことを願って。

※ 前回書いた 時は金なり 的な内容の記事とやや被ってますね…。

日々を見返すきっかけになれば、幸いです。


ここまで読んでいただき、ありがとうございます。

機会がありましたら、別の記事でお会いしましょう。


いただいたサポートは、今後の創作活動に役立てさせていただきます。