ソフトウェアテストについて

OTです。
皆さんはソフトウェアの開発でプログラミング以外にも重要な仕事があることを知っていますか。

書類の作成や、顧客との会議などがあると思いますが、最近になってソフトウェアテストの作成が重要なことがわかってきたので、今回はソフトウェアテストの作成についてお伝えしたいと思います。

[ ソフトウェアテストとは何か ]

 ソフトウェアテストとはソフトウェアのテストを主にユーザーに使ってもらう前に行うテストです。
 ソフトウェアのことについて知らない人もいると思うので、ソフトウェアに関してもお伝えします。

 ソフトウェアとは、皆さんが使っているスマホのアプリやウェブサイトのシステム、業務のパソコンで使われているシステムなどがあります。

 では、ソフトウェアのテストは具体的にどのようなものがあり、どのような流れで行われるのかをお伝えしていきます。

[ ソフトウェアテストの具体例 ]

 ソフトウェアテストには大きく分けてシステムテスト、機能テスト・結合テスト、単体テストがあります。それぞれが開発の段階や、参考にする書類などに合わせるようになっています。

 今回は、ソフトウェアテストの中でも、ユーザーに一番近い段階や状態で行われるシステムテストについてお伝えしていきます。 

[ システムテストについて ]

 システムテストは要件定義と呼ばれるどのような目的のシステムなのか、どのような人たちを対象に考えられているのか、どのような時に使われるのかなどが定義される思いに一番最初に作られるような書類を参考にして、ユーザーの目線で行うテストです。

 ユーザーと同じような目線で行われるため、「ブラックボックステスト」と呼ばれる、ソフトウェアの中身(プログラミングなど)を気にしないでテストを行います。
そのため、アプリゲームなどのベータ版のリリースなどのように、ユーザーがテストを行うベータテストなどもあります。

 では、ソフトウェテストを行うテスターやテストエンジニアの方々はどのようなことをしているのでしょうか?
 それぞれでテストへの関わり方などに違いがあります。

 テスターと呼ばれる方々は基本的にテストケースと呼ばれるテストを行うための手順や操作を確認してテストを行っていきます。そのため、1日に30~50近くのテストが行われます。
 
 ユーザーがテストを行うのと違う面としては、期待していた結果とは違うことが起きた際にどのように報告をするかだと考えられます。 

 報告の仕方は様々ですが、不具合票と呼ばれる書類などに詳細に手順や操作、どのようなことが起きたのか、環境(デバイスやウェブブラウザなど)はどのようになっていたのかなどを記載して担当の方に提出や報告をします。

 テストエンジニアの方々は、テストを行う以外にも、テストケースの作成やテストの計画などを行い、テスト全般において関わってきます。そのためテストエンジニアの中にも、様々な役割があります。

 ここではテストエンジニアの方々の説明は長くなるので詳細は省きますが、今回はテストケースの作成についてもう少し触れておきたいと思います。

[ テストケースの作成について ]

 システムテストにおいて主に行われるテストケースは同値分割、境界値、状態遷移図(表)、デシジョンテーブルなどの様々なテストを行います。
様々な方法でテストケースを作成するのは、より多くの視点、効率をよくするための方法などが考えられてきたためです。 

 テストを行うのは単純な作業ばかりですが、単純な作業に落とし込むまでに様々な視点や考えが必要なことの証になります。 

 例えば、同値分割や境界値においてはユーザーの入力に合わせて正しく動作するのか、間違った入力の場合にはエラーとなるのかをテストします。

 また、状態遷移図(表)などのようにユーザーがどのような流れで動作するのか予測して、期待通りの流れでソフトウェアが動くのかを確認するテストや、デシジョンテーブルのように網羅的にユーザーの動作に対してソフトウェアが正しく行われるのかを確認するテストがあります。

 ここまでで様々なテストケースの作成方法をご紹介しましたが、楽しいと思えたでしょうか?

 ソフトウェアに関わらない人にとっては興味の薄い話かもしれませんが、テストケースの作成はソフトウェアの開発以外に、日常生活にも転用できると僕は考えています。

 テストケースの作成方法について、わかりづらいところもあると思うので、別の記事でご紹介したテストケースの作成方法について具体例を出し、日常生活にどのように活かせるのかをお伝えしたいと思います。