テストは何のためにやっている?
私は、テストが嫌いです。
特に、暗記系科目は本当にダメですね。そんなことを言っていると、大概の筆記テストが最悪な状態になります。資格には必ず筆記テストがありますが、散々な結果になりそうなので取得できないだろうな・・と思っています(遠い目)。
筆記テストは、「(短期的な)記憶力が良い人」と「覚えるのが上手な人」が高得点を取るというものだと、認識しています。学生の時ぐらいしか、そういった力を磨く機会はないと思うので、脳トレと割り切って勉強するのもありですね。
さて、本日書こうと思っているのは「テスト」ではあるのですが、「仕事で使っているテスト」に関してです。
エンジニアがやっているテスト
テストの対象は、私たちではありません。
実際に手を動かしているのは私たちの可能性がありますが、実際に〇×がつけられるのは、プログラムに対してです。
システムエンジニアには、作ったモノに対する責任があります。
・ちゃんと想定通りの動作をするのか?
・想定しない値を入れられても問題ない形で動作をするか?
・悪意ある攻撃をされても対処されているか?
・etc...
そういったことを確認し問題がないことを保証するために、テストを行います。
テストの方法には、大きく2つあります。
・実際に手を動かして確認をする方法
・コーディングで自動的に確認する方法
確認をする作業は、大事なものですがつまらないもの でもあると思います。
そういったつまらない作業は、極力自動的に、すぐに終わらせたいですね。
しかも、一度実施したテストはその一回で終わるわけではなく、同じような確認作業を行う場面もあります。修正や機能追加があった時に影響がないかを確認するためです。
そういうことを書いていると、「コーディングで自動的に」やった方が良い気持ちになってきますね。
コーディングテストのデメリット
自動的に実行されるテストは、メリットばかりではありません。もちろん、デメリットもあります。
1. コーディングをする時間がかかる
2. 実装自体に修正があった場合、コーディングの修正も必要
3. コーディングが間違えていたらテストの意味がない
つまり、「自動的にするための時間がかかる」わけです。
コーディングは書かれている命令、処理のまま。その通りの動作しかしません。だからこそ、影響範囲がないかを確認するような「念のための確認」という状況では有利に働きます。
また、テスト自体や検証する内容が間違っていれば、そのままになる可能性もあります。
メリットとデメリットを把握して使いこなす
一つの考え方になりますが、こういう基準で分けても良いかもしれません。
1. 頻繫に変更が発生する ⇒ 手を動かすテスト
2. あまり変更がない機能 ⇒ 自動実行のテスト
その場面に合った方法を見極めて、実施できると良いですね。
・・作業にはどうしても、時間がかかります。
やりたいこと に対して、最小限の時間と最小限の労力で成果を出す
これが出来ると良いですね。そのためには、
何故その作業をやるのか。
3か月後がどうなるのか。
を考えながら作業を行うことを心掛けることをオススメします。
私はコーディングによるテストを行う機会は多いのですが、その意義を忘れ、検証内容も足りずに、ただ時間だけを消費しているものと遭遇することも多々あります・・。
皆さんがせっかく作業をしたものが、無駄にならないことを願って。
※ 前回書いた 時は金なり 的な内容の記事とやや被ってますね…。
日々を見返すきっかけになれば、幸いです。
ここまで読んでいただき、ありがとうございます。
機会がありましたら、別の記事でお会いしましょう。
いただいたサポートは、今後の創作活動に役立てさせていただきます。