【ちゃんなるぶろぐ】社会人1年生が日々の学びをアウトプット!

>>> 読書・遊び・プログラミング・アプリ開発などを通して学んだことを、文章という形で出力 <<<

3分でわかる!「プログラマが知るべき97のこと」その②⑥

読み終えるまで約3分

 

どうも、ちゃんなるです! 

今日も”デキる”プログラマになるべく勉強していきましょう!

 

今回は、次の書籍の一部を要約します。

プログラマが知るべき97のこと』

 

下の記事の続編です↓↓

chan-naru.hatenablog.com

 

今回選択した3つのテーマ

本書はタイトル通り97のことについて書かれています。

今回は、76~78番目の項目についてまとめます。

  1. コード分析ツールを利用する(No. 76)
  2. 偶然の仕様ではなく本物の仕様のためのテストを書く(No. 77)
  3. テストは夜間と週末に(No. 78)
①コード分析ツールを利用する

このテーマで述べられていたことは、

「テストは重要だが、コード分析ツール(いわゆるlint)も積極的に活用しよう!」

ということです。

 

以下、要約です。

近年では、ユニットテストやTDD(テスト駆動開発)、アジャイル開発などが広く行われるようになり、開発サイクルのあらゆるフェーズでテストを最大限活用するという考え方を受け入れる人も増えました。

しかし、テストがいかに重要といえど、それがコードの品質を高める唯一の方法というわけではないのです。

 

昔に比べ現在は、コンパイラ自身がチェックできるエラーも増え、ほぼ全ての言語でスタイルガイド違反やバグ検出をするためのツール(いわゆるlint)が用意されています。

中には設定をいじれるものもあり、検出するエラーや警告の種類を選ぶことができるのです。

 

コードの品質向上にあたっては、テストだけに頼るのではなく、解析ツールも積極的に利用すべきです!

②偶然の仕様ではなく本物の仕様のためのテストを書く

このテーマで述べられていたことは、

「現状のコードを正しいと思ってテストコードを書くのは危険。テスト対象のコードの中身ではなく、外から見た動きに注目してテストを書こう!」

ということです。

 

以下、要約です。

テストをする際の典型的な落とし穴は、現状の実装コードのあまりに細部に至るまで厳密にテストしてしまうことです。

実装コードには、「実装の都合でたまたまそうしている」という箇所が多々あり、そこをテスト対象としても意味がないのです。

また、そのようなコードの偶然の仕様がテスト対象となっていると、本来の仕様に沿うよう改良を加えることがテストを失敗させる可能性があります。

テストを修正するにしても、本物の仕様にあっているかを確認するよう修正すればいいが、コードの改良より新たに生じた偶然の仕様に合わせて修正しては意味がありません。

「本当にテストすべきことは何か」をよく考え、的確なものにする必要があるのです。

 

細かすぎる仕様に囚われてテストを書いてしまう傾向は、ホワイトボックスアプローチのユニットテストでよく見られます。

ホワイトボックステストでは、どのようなテストケースが必要か判断する際、コードの構造を手がかりにします。

それゆえ、現状のコードが正しいと判断しやすいのです。

この対策にはブラックボックステストが有効です。

テスト対象のコードの中身ではなく、外から見た動きに注目してテストを書きましょう。

③テストは夜間と週末に

このテーマで述べられていたことは、

「夜間や週末に自動でテストすることで、効率的にソフトウェアのテストが実行できるのです!」

ということです。

 

以下、要約です。

夜間や週末にはテストサーバを動かしてないところは多いでしょう。

ぜひ動かして、日々の業務中にテストをする時間を削減してはどうでしょうか。

 

日々の業務時間中ではテストに割いている時間がないと思って下記のような状況を経験したことがある人もいるのではないでしょうか?

  • 罪悪感を感じながらも、テストを全て実行する前に変更をコミットしてしまった
  • 製品の安定性をテストする機会がそもそも十分でない
  • パフォーマンステストもなかなか実施する時間が確保できず、やってない
  • 順列組み合わせをさまざまに変えてテストする必要がある場合は手作業では対応が困難で、それゆえやっていない

 

スクリプトの知識が少しあれば、自動テストの仕組みを作ることができます。

基本はcronを使ったスケジューリングです。

数多のテスティングツールも提供されています。

リソースを効率よく利用できるように、グリッドコンピューティングによってサーバを分散させている企業もあります。

まとめ

①コード分析ツール(lint)はさまざまな言語向けのものがリリースされています!あなたが使う言語でも、lintを設定してみてはどうでしょうか?

②より良いテストを書くために、テスト対象のコードの中身ではなく外から見た動きに注目してテストを書こう!

③夜間や週末に自動でテストすることで、効率的にソフトウェアのテストが実行できるのです!

 

*より深く知りたい方は、ぜひ本書を手にとってみてください!

書籍情報

プログラマが知るべき97のこと [ ケブリン・ヘニー ]

価格:2,090円
(2021/5/13 11:12時点)
感想(1件)

【中古】 プログラマが知るべき97のこと /ケブリンヘニー【編】,和田卓人【監修】,夏目大【訳】 【中古】afb

価格:825円
(2021/5/13 11:12時点)
感想(0件)

【書籍名】プログラマが知るべき97のこと

【著者名】ケブリン・へニー、夏目大(訳)

【出版社】オーム社

【出版日】2010年12月

【ページ数】243ページ