本記事はPythonテストのためのチェックリストの作り方を紹介するものです
今回は、ソースコードからチェックリストを作る方法について紹介します。

かつては最もスタンダードなテストチェックリストの作成方法が「ドキュメントからチェックリストを起こす方法」でしたが、昨今のスピード開発を考えると現実的ではなくなってきました。

ドキュメント自体がないケースも多いので、ソースコードからテスト項目を起こすことも必要となっています
時代の変化に合わせて柔軟に対応していきましょう。

※ソースコードからチェックリスト自動生成する方法には触れていません。ご了承ください。

【Python】ソースコードからテスト項目を起こす方法

ソースコード
ソースコードからテスト項目を起こす場合はホワイトボックステスト(プログラムの内部構造を考慮したテスト)を作る場合に活用できます。

ソースコードからテスト項目を起こす手順は以下の通りです。

・図や表にまとめて条件や入出力を整理
・観点表にまとめる
・チェックリストを作成する

ソースコードからチェックリストを作る方法は初心者でも取り組みやすいですが、そのままだとデグレードチェックぐらいにしか使えません。

テスト条件を整理する時にドキュメントや要件定義と照らし合わせて足りないテスト観点を追加していきましょう。

図や表にまとめて条件や入出力を整理

ソースコードから直接チェックリストを作成しようとすると抜けが出やすいので、まずはフローチャートや画面遷移図などの図や表にまとめて情報を整理しましょう。

図や表で明示的にしておきたい情報としては以下があります。

・分岐条件
・境界値・限界値
・繰り返し
・関数やクラスの入出力

上記を明確にしておけば網羅性の高いチェックリストを作成することが可能です。

テスト観点表にまとめる

まとめた図や表を元にテスト観点表を作成します。

機能や条件を元に大項目~小項目にテスト観点をまとめていきましょう。
項目の切り分けはざっくりとでよいです。

私が作る場合の切り分け方は以下の通り。

大項目:関数
中項目:ブロック
小項目:プログラムの分岐条件

上記を表にすると以下のようなイメージになります。

大項目中項目小項目
関数1ブロック1条件1
条件2
ブロック2条件3
クラス1メソッド1条件4
メソッド2条件5
条件6

チェックリストの作成

作成した観点表をチェックリストに落とし込んでいきます。

チェックリストはどのようなものでもよいですが、今回はマトリックスを作成する場合を例に説明します。
マトリックスとは以下のような表のことです。

マトリックス1

上段はテストの条件、下段は実施後の確認内容を記述します。
日付欄には日付を追加します。右側はテスト項目です。

マトリックス2

テスト項目は以下のようにチェックや確認するところに「〇」で記述します。

マトリックス3

テスト項目は縦で1件です。(上記の場合は10件。)
条件で「〇」がついている点について条件設定や確認を行います。

例えば上記例の1件目なら「条件1」と「条件A」が条件で、「確認1」と「確認2」がテスト後の確認内容です。

テストの実践方法

テストの実践方法には、印刷して実施する方法とパソコン上でやる方法があります。

印刷して実施する場合はチェックした項目をペンでチェックしていきましょう。パソコンで実施する場合は、〇を●に書き換えるなどチェックしたことがわかるようにしておきましょう。

テストのためにソースコードを最適化しよう

情報処理
テストを人の手でやる場合膨大な時間がかかります。また、人の手でやる場合はオペレーションミスなども発生して無駄なテスト時間ができやすいです。

昨今のスピード開発に対応するためにはテストにあまり時間をかけることはできません。
できる限りソースコードを最適化してテストの負担を減らしましょう。

テストしやすいコードを書く

手動でテストする場合膨大な時間がかかります。大きなプロジェクトだとコードを書く時間よりもテストの時間がはるかに多いです。

テストがなかなか終わらずに炎上するケースも多いので、スピード開発が要求される昨今においてはいかにテスト時間を短縮するかが急務です

テストの時間を短縮するためには「テストをしやすいコードを書く」ということが大事になります。

「どうすれば今よりもテストが楽になるか?」
「どうすれば自動化しやすいか?」
など実際のテストをイメージしながらコードを書くようにしましょう。

ユニットテストのコードをセットで書く

コードを書いたらユニットテストのコードもセットで書いておきましょう。

手間が増えて面倒に感じるかもしれませんが、一度テストコードを書いておけば何度も使いまわすことができるので長い目で考えれば大きな作業効率化につながります。

また、テストコードなら人の手よりも早いですし、オペレーションミスもないので無駄な作業も大幅に削減可能です

現在テストコードを書けていないコードについても少しずつテストコードを加えていきましょう。(自戒)

ログ出力や解析ツールは充実させる

不具合が出た時にログが少ないと問題の絞り込みに膨大な時間がかかります。
ログ情報はできるだけ充実させておきましょう。

また、ログ解析ツールを作って解析コストを減らすことも大事です。できる限り人の手を減らすようにしましょう。

終わりに

今回はソースコードからテストを起こす方法を紹介しました。

ソースコードからテストを起こすのは本末転倒に感じるかもしれませんが、「ドキュメントが古い」、「そもそもドキュメントがない」という現場では有効な方法の1つです

もちろんそのままだとデグレードチェックにしかならないので、テスト項目を起こした段階で全体を見直して足りないテスト観点を補いましょう。

また、より効率的なテストを行うためには「テストをしやすいコードを書く」ことが大事です。

スピード開発に対応するためにテストとソースコードを最適化していきましょう

関連記事>>Pythonプログラミングの始め方まとめ