見出し画像

ソフトウェアテストの自動化を考えるために情報整理をしてみた

ソフトウェア開発のテストは、大変なノウハウと、工程が必要になることは多くの方々が知っているかもしれません。

もはや、整理もできておらず慣れた業務しかテストできないなー、と感じ、改めて整理してみました。

テストの3分類

機能テストを軸に、3つに分類してみました。

機能テスト

  1. ユニットテスト: 個々のコンポーネントやモジュールの機能をテストします。

  2. インテグレーションテスト: 異なるモジュールやサービスが互いに正しく連携しているかを確認します。

  3. システムテスト: 完成したソフトウェアシステムが仕様に沿って機能するかを全体的にテストします。

  4. 回帰テスト: 既存の機能が新しいコードの変更によって壊れていないかをチェックします。

  5. 受け入れテスト: エンドユーザーの要件を満たしているかを確認します。

ノンファンクショナルテスト

  1. 性能テスト: システムのスピード、応答性、安定性などを評価します。

  2. 負荷テスト: 大量のデータやユーザーのリクエストに対するシステムの耐性をテストします。

  3. ストレステスト: 極端な条件下でのシステムの挙動を評価します。

  4. セキュリティテスト: セキュリティ脆弱性や脅威への対応をチェックします。

  5. 互換性テスト: 異なるデバイス、OS、ブラウザでのソフトウェアの動作を検証します。

特殊なテスト

  1. APIテスト: アプリケーションプログラミングインターフェースの機能と性能をテストします。

  2. UI/UXテスト: ユーザーインターフェースとユーザーエクスペリエンスの品質を評価します。

  3. データ駆動テスト: 異なるデータセットを使用してテストを実行し、データ依存の問題を特定します。

  4. エクスプロラトリテスト: スクリプトに頼らず、テスターの直感と探索に基づいてテストを行います(自動化と組み合わせることも可能)。

テストには、開発者が想定していないことももちろん含まれます。また開発段階では想定しきれない、もしくは環境を用意することができない状況もあり、ソフトウェアの品質を大きく左右するのがこのテスト業務になります。

ソフトウェアテストの負担は

実際のところ、ソフトウェアの開発であっても、ソフトウェア以外にはハードウェアもあれば、OS、ミドルウェア、周辺のアプリケーション(データベース、外部システムAPIなど)も関連しますので、膨大な想定が求められるわけです。

一方で、どこまでテストを行うかはコストや時間の問題もありますね。人の手がとても必要な領域でもあります。

実際のところ、ソフトウェアテストの負担の多くは「人」になります。もはやテストをテストしなければならないような、人力比率が高いことも事実ですね。

そこで、やっぱり自動化が登場します!現代はIT・DXの名のもとに、多くのソフトウェアが開発されているため、テストの自動化はとても注目されている領域です。

テスト自動化の目的について

テスト会社として大手のShiftさんの記事を紹介します。

テストだけでなく、「自動化」を導入するにあたりとても重要な一文がありました。

自動化で削減した工数で、人の手で行わなければならない開発やテストに工数を効果的に配分させることが最大の目的になります。テスト自動化の適用範囲を拡大することも非常に重要です。

https://service.shiftinc.jp/column/4634/

自動化は、テストによらず、目的を果たすことが大事ですね。やはり人の手の削減です。

一方、、、、
一人の人の手を削減したら、他の人の管理が増えてしまった。
あれ、結局みんなの工数って下がったの??
全員YESというけど、パフォーマンスが上がっていない、なんてことも多い。

自動化はやっぱり組織で導入しないといけないと、確かに感じた次第です。

個人の自動化からスタートして、組織における自動化の取り組み、全社の自動化の取り組みまでスケールさせていくお手伝いも会社で行っています。

人の仕事環境が良くなることがもっとスムーズに進んでいけるといいですよね!

自動化について学ぶと同時に、組織についても学ばないとな。。。

この記事が気に入ったらサポートをしてみませんか?