◆
前回、テストの中には敢えて多大な負荷をかけて動作を確認する『負荷テスト』と言うものが存在すると言う話をし、その終わりに実動作の反応速度についてテストする例として、『検索した商品を表示させるのが平均1.2秒だが、1000回繰り返すと平均2秒になる』を挙げました。今回はその例に沿ったテストについて触れていきたいと思います。
『検索した商品を表示させるのが平均1.2秒だが、1000回繰り返すと平均2秒になる』と言う話、そもそも1000回も商品検索をする人が居るのかどうかは別として、何かしらの繰り返し動作を行っていた時、ある時から「なんか反応悪くなった」と感じた事は無いでしょうか。これは繰り返し動作を行っている間に、何かしらのデータが積み重なって動作を遅くしている事から発生します。
過去に実際に確認していた動作テストして、『入力した数値の面積の結果が表示されるまでの時間を計測する』ものがありました。大きい数値の物は小さい数値のものよりも、表示が少しばかり遅くなるのはその当時では普通だったので大体の平均値に収まっていれば良かったのです。ところが繰り返し数値を入力し結果を測定している内に、小さな数値の計算結果が表示されるまでの時間が今までの倍以上の時間が掛かる様になりました。1.2秒で表示されていたものが1.5秒で表示されてもあまり違いは分かりませんが、2秒を超えるようになると流石に違いが分かります。
そのまま動作テストを続けていった結果、本来想定されている平均値を大幅に超える時間が掛かる様になりました。なので動作テスト対象のリセットを行い勘再同じ内容で度確認すれば、本来想定されていた速度で結果が表示される様になりました。勘の良い人はすぐに分かると思いますが、ここで問題になって来るのが「今まで確認してきた計測値は本来の数値なのか」と言う事です。リセットして1回目のテストデータは、真っ新の状態で確認しているので本来の計測値と言えます。では2回目のデータはどうなのでしょうか。既に不要なデータによって動作が遅くなり、余計なものがついた計測値になっている訳です。
当時の最終的な結果としては、何度か動作確認を行った後には、比較的早い段階で動作が遅くなっている事が分かり、1回のテストデータを入力し結果表示後に毎回リセットをする事となりました。様々な入力された数値に対しての時間を計測したいので、取り敢えずの対策としての確認です。全てのテストデータを再確認する事になり、確認の手間も増えましたが「なんか遅くなっている気がする」と思い、同じデータに対して異なるパターンで確認をかけた事は結果として良かったと言う事です。
最終的な結論としては、リセットをかけずに計測した数値とリセットを毎回かけて計測した数値では、思った以上に差が出た事により、そのテスト対象には動作の軽量化やデータの取り扱い、特定のタイミングで積もったデータの削除を行うように改良や修正が加えられる事となりました。地味で単純なテストではありますが、大量のデータを確認し「このあたりから一気に反応が遅くなります」等と報告出来たのはテスト実施者として大事な事でしたね。
◆
話に挙げた当時のテストは、期待する動作速度がテスト開始当初には不明確だったため、幅広いテストデータを用意したことで上記のような事象の発生を確認できました。このような動作速度の期待値が曖昧なケースにおいては、小さい数値のみを連続で計算させるよりも、大きい数値を計算させた後の方が、より早く結果表示の速度が落ちる等々、負荷の掛かり方が異なるケースがでてきます。単純な計算結果を表示させると言う機能であっても、『計算結果が正しいか』だけでなく『動作速度は問題ないか』等の確認を行う事もテストとして非常に重要なのです。