【保存版】ソフトウェアテストとは?現役管理職が[稼げる手順]を徹底解説
ソフトウェアテストって何?
デバッグとテストは同じ意味?
ソフトウェアテストの給料水準ってどれぐらいなの?
こういった疑問に答えます。
ソフトウェアテスト業界未経験者だとこの辺りの疑問を持つことが多々あるはずです。
これらの解説はもちろんソフトウェアテスト業界に転職したとして、将来はどれぐらいの給料をもらえるようになるのだろう。と言ったような具体的に解説をします。
この記事を全部読んでいただければ、
- 未経験からソフトウェアテスト業界を目指す
- 異業種からソフトウェアテスト業界を目指す
- 自らの学びをレベルをアップしたい
と考えている方には、初めの第一歩となり、次のステップへスムーズに入っていくことが可能です。
それだけ、初心者であってもわかりやすく噛み砕いて説明をしましたので、ぜひ最後までご覧ください。
本記事からわかること
- ソフトウェアテストとは何か?
- ソフトウェア開発におけるテストの役割
- ソフトウェアテスト業界の給料水準
ソフトウェアテストとは何か?
結論としてソフトウェア開発をおこなったシステム、Webなどをチェックすることです。
ただ、適当にチェックすれば良いというものではなく、正確にチェックするため様々な指標が用いられますので、順に紹介していきます。
テストの必要性
テストの必要性は以下の3点です。
- リリース後重大事故に繋がらないため
- リリース後ユーザーが安心して使っていただけるため
- ユーザーに満足していただけるため
この他にも重要なことは無数にありますが、ここでは特に重要な上記の3点に絞りました。
一つずつ紐解いていきます。
リリース後重大事故に繋がらないため
ソフトウェアテストを怠ると重大事故に繋がるケースがあります。
例えば、飛行機の制御装置など、人の命がかかるような場合、テストを怠ってしまうと取り返しのつかないことになってしまう恐れがあります。
その分、より一層厳格なテストが求められます。
このようにソフトウェアテストといっても内容は様々です。
主には以下にように様々なジャンルが存在します。
- 飛行機制御装置のような人命に関わるソフトウェア
- 主に企業で導入されている大型企業向けソフトウェア
- ゲームなどのエンターテイメント性のあるソフトウェア
どの業界でもそうですが、致命傷のバグがリリース後に発覚してしまったらユーザーの離脱にもつながりかねません。
ましてや飛行機制御装置などの人命に関わるソフトウェアの場合は、ユーザーの離脱だけでは済みません。
むしろ、下手すると裁判沙汰になってしまいます。
また、そのような不祥事を一度だけでも起こしてしまえば、以下のような事案が発生してしまいます。
- ユーザーからの失墜
- 契約の打ち切り
- 損害賠償の請求
そのため、どのような業界においても適正なタイミングで適正なテストをおこなう必要があるのです。
リリース後ユーザーが安心して使っていただけるため
この会社の商品であれば問題ない
そのように信頼を勝ち取ることはとても大切です。
逆に、毎日不具合が頻繁に発生し、毎回臨時アップデートを繰り返してしまっていては如何でしょうか。
そのソフトウェアを安心して使えるというには程遠いはずです。
様々なユーザーがいらっしゃいますし、全てのユーザーの要望を取り入れる形でソフトウェアを開発するのは難しいです。
ですが、前述したようなソフトウェアの場合、少なからず離脱していくことでしょう。
ですから、そうならないためにもソフトウェアテストのレベルが求めらるのです。
ユーザーに満足していただけるため
これも前述した内容と似ているのですが、一例を挙げると以下の通りです。
- 不具合が頻発するとユーザーの不満が溜まる
- 使い勝手が悪いとユーザーの不満が溜まる
- メンテナンス期間が頻発および長時間に渡るとユーザーの不満が溜まる
これらの要素が多いと、ユーザーからは不満の声があがります。
逆を言えば、こちらに記載しているものの反対のことをおこなえば満足度は上がるのです。
具体的には以下の通りです。
- 不具合が滅多に発生しない
- 使い勝手が良い
- メンテナンス期間が短い
テストの7原則
テストの7原則とは以下の通りです。
引用元:JSTQB公式ページ FLシラバス
- テストは欠陥があることは示せるが、欠陥がないことは示せない
- 全数テストは不可能
- 早期テストで時間とコストを節約
- 欠陥の偏在
- 殺虫剤のパラドックスにご用心
- テストは状況次第
- 「バグゼロ」の落とし穴
一つずつ紐解いていきます。
テストは欠陥があることは示せるが、欠陥がないことは示せない
不具合が見つからなかったとしても正しさの証明にはならないということです。
例えば、テストをおこない、不具合が全く見つからなかったとします。
ただ、その時実行したテストケース上で不具合が見つからなかっただけで、もしかしたらテストケース外のところに不具合が潜んでいたかもしれません。
ですので、不具合が「ゼロ」だからといって安心してはいけないのです。
全数テストは不可能
すべての組み合わせをテストすることは「不可能ですし、効率的ではありません。」ということです。
小さな機能でしたら何十通りの組み合わせでテストが可能ということもありますが、大きな機能のテストのなると全組み合わせは何千通り、何万通りになることも少なくありません。
その全てをテストするのは効率的でなく、以下の考えでテストをすることが重要です。
- これまでの結果に基づいてテストする箇所を絞り込む
- これまでにテストをあまりしていない箇所を重点的にテストする
- 実際のユーザーの動きを想定してテストする
早期テストで時間とコストを節約
開発工程では不具合を後で発見すればするほどプログラムを修正するのに時間がかかります。
修正に時間がかかるということはコストもかかるということです。
ですから、時間とコストを節約するためには、できるだけ早い段階でのテストが求められるのです。
具体的には以下の段階からテストに入れるとベターです。
- 要件定義
- 要件定義のレビュー
お客様と要件を詰めた際の要件定義の部分から参加し口出しをすることができれば、ソフトウェアテストの観点からも見ることが出来てベター - 仕様書作成
- 仕様書のレビュー
要件定義がまとまった後の仕様書(プログラムやシステムを構築するための設計書)作成段階から参加できれば、仕様書の間違いなどがあった場合、いち早く気づけるのでベター - プログラムを書く
- コードレビュー
動いたものに対してテストするのではなく、プログラムを書いた際、そのコードによっておこなうレビューであり、プログラムが完成する段階、コードを書いた直後に気づけるのでベター
全体を通してテストするレベルで不具合が見つかり、開発者にフィードバックをしている形になっていると、かなりの手戻りが発生してしまいます。
その分、テストの工数とプログラムを修正する工数が逼迫してしまいます。
ですので、それより前に不具合を発見すれば手戻りも少なくなり工数も増えないというわけです。
その結果、少ないコストで運用できるため、お客様にも喜ばれます。
欠陥の偏在
バグはシステムの全面的に発生するのではなく、大部分は特定のモジュールでバグが発生しやすいという話です。
その特定のモジュールというのは一例を挙げると、境界値というものがあります。
例えば、半角数字4文字〜8文字が入力可能なテキストボックスがあったとします。
ここでの確認方法は以下の通りです。
- 半角数字3文字
- 半角数字4文字
- 半角数字8文字
- 半角数字9文字
- 半角数字3文字
- エラーになること
- 半角数字4文字
- 入力可能なこと
- 半角数字8文字
- 入力可能なこと
- 半角数字9文字
- エラーになること
このような形になり、境界値を確認する際は4つの境界値
- 最小文字数未満
- 最小文字数
- 最大文字数
- 最大文字数超過
上記のような形で確認をします。
バグというものはこの境界値に潜みやすいと言われています。
もちろん、これ以外にもバグが潜みやすい箇所はありますので一例として認識していただけたら幸いです。
それはテスト実行をしていく中で、以下のように感じることが多々あるはずです。
- この部分はバグが多くなっている
- ここの部分はバグが少ない
一つのシステムを何度かテストをしていけば、そのような傾向がわかってきます。
そのため、その傾向を分析して、バグが発生しやすい箇所を重点的にテストするということはとても効率的な手法の一つです。
殺虫剤のパラドックスにご用心
何度も同じテストを繰り返していると最終的にはバグが発見できなくなるという例えです。
なぜバグが発見できなくなってしまうのかというと、抗体が出来てしまうというからになります。
風邪になってそれに適合した薬が投与されると抗体ができ、次からは風邪になりにくくなることもありますが、いわばそれと似たような現象なのです。
バグが発見でなくなるのは良いことのように思われがちですが、前述したように以下のようなケースもあるということを念頭に置いておかなければなりません。
- テストケースだけでバグの検出が賄えない
- バグはテストケース外のところで発生する
- バグは見えない部分に潜んでいる
上記のような事象もあるため、定期的なテストケースのアップデートが必要になってきます。
前述した、傾向を分析しバグが発生しやすい箇所に絞って重点的にテストをするということにも関連してくるのですが、テストをおこなっていく中でバグが発生する傾向やモジュールなどを分析し、それに合わせた形でテストケースをアップしていけば問題ありません。
テストは状況次第
状況が異なれば、テストの方法も変わるということです。
例えば、以下のような部類でテスト方法が異なります。
- 24時間稼働の飛行機制御システム
- 企業で導入されている業務用会計ソフト
- ゲームソフト
24時間稼働の飛行機制御システム
このシステムになると命に関わるため、安全性に焦点を合わせた厳格なテストをする必要があります。
企業で導入されている業務用会計ソフト
企業で導入されているということで、お客様と要件をしっかり固めた上で、企業に導入した上のオペレーションやユーザビリティなども重視したテストが必要になります。
一般ユーザー向けゲームソフト
一般ユーザー向けということで、実際にユーザーがゲームするのを想定してテストすることが必要で、時にはユーザーが想定外の動きをした際の挙動を確認することも求められます。
ですから、いつ何時ともこのテスト方法をしないといけないという決まりはなく、システムやプロジェクトの状況に合わせて臨機応変にテストをするという能力が求められます。
「バグゼロ」の落とし穴
これはいわばソフトウェアテストの肝と言える部分です。
お客様やPM(プロジェクトマネージャ)が設計した要件通りにシステムを構築したとしても、ユーザーとしてはその構築した機能が使いにくかったりする場合があります。
ですから、テストをする側としても要件通りにシステムが構築されているかばかりに焦点を当てるのではなく、ユーザビリティ、いわゆる使い勝手が良いか良くないかに焦点を当ててテストすることも重要です。
ユーザー目線に立ってテストを確認するということになります。
ソフトウェア開発におけるテストの役割
ここではソフトウェア開発におけるテストの役割にどのようなものがあるか見ていきます。
下記は、よく混同される「デバッグ」と「テスト」の違いに関してです。
デバッグとテストの違い
結論から言うと、デバッグとテストは全く別物で異なります。
Twitterにて下記のように問いかけをしました。
ソフトウェアテストを長年おこなっている人であっても、自分はデバッグをおこなっているのか、テストをおこなっているのかが理解できていない場合があります。
ここでは、未経験からソフトウェア業界に挑戦したいと思われている方にわかりやすく、デバッグとテストに関して見てきます。
デバッグ
デバッグの定義は、以下のように定められています。
故障の基となる欠陥を見つけて、解析し、取り除く一連の開発活動
引用元:JSTQB公式 FLシラバス
テスト
テストの定義は、以下のように定められています。
実行することでソフトウェアに存在する欠陥に起因する故障を示す
引用元:JSTQB公式 FLシラバス
定義だけではわかりにくいので、以下の表にまとめました。
デバッグ | テスト |
---|---|
開発者担当者 | テスト担当者 |
故障の基となる欠陥を見つけて、解析し、取り除く一連の開発の活動 | システムを確認し不具合を見つけて開発者へフィードバックする作業(解析、取り除く作業は行わない) |
よく周りでゲームデバッガーをやっていました。デバッガーをやっています。
と耳にすることが多々ありますが、ほとんどの人が言葉の定義を誤って使っていることになります。
修正まで自分の元でおこなわなければ、テストをおこなっているということになります。
また逆に、欠陥を見つけ修正まで自らがおこなっているのであれば、デバッグということになります。
ソフトウェアテスト業界の給料水準
結論から言うと、年収約360万円〜1000万円です。
記載した通り、とても幅がある世界になります。
言い換えれば、頑張れば頑張るほど給料が高くなるという世界で夢もあります。
ソフトウェアテスト業界で給料をアップさせる方法
以下の3点全ての項目に当てはまるように転職すれば可能です。
- エンタープライズ業界に転職する
- テストマネージャーになる
- マネージャーになる
もちろん未経験からいきなりテストマネージャーやマネージャー職で転職を成功させたりとかは難しいですので、現実的なステップアップは、以下の順番で進めることになります。
- エンタープライズ業界に転職する
- 業務経験を積む
- テストマネージャーになるために学習する
- 資格を取得する
- マネージャーになる
私も現在、マネージャーとして管理する立場となっていますが、上記のステップでキャリアアップに成功しました。
ですから、この記事を読んでいただけている読者のみなさんも、上記のステップを踏めばキャリアアップに成功しないことはないと考えています。
具体的に言えば、内容により給料は増減しますので、しっかりとしたステップを踏んで、転職やキャリアアップをしていくことが大切なのです。
その内容を一つずつ紐解いていきます。
- 業界
- 業務
- 役割
ソフトウェアテスト業界と業務内容
- ソフトウェアテスト業界の区分け
- 業務内容の違い
上記の内容によっても給料水準は変わってきます。
いわば、どこの業界に転職するかによっておおよそ給料は決まっているのです。
ですから、転職活動をする際には、以下の内容を踏まえた上でおこなうことがとても大切になります。
- 将来的に給料をどれぐらいもらいたいのか
- 将来的にどこのポジションで活躍したいのか
- 将来的にどこの業界で働きたいのか
詳しくは以下で見ていきます。
業界
ソフトウェアテストといっても業界は様々です。
大きく分けると以下2つの業界が有名です。
- エンターテイメント
- エンタープライズ
エンターテイメントとはいわゆる以下のような業界です。
- ゲーム
- 音楽
- 配信
エンタープライズとはいわゆる以下のような業界です。
- 企業向け会計ソフト
- 金融系システム
- 採用マッチングサービス
わかりやすくいうと、エンターテイメントは楽しむ業界、エンタープライズはビジネス業界になります。
そして、一般的には、エンターテイメントは低い給料、エンタープライズは高い給料と言われています。
業務
今置かれている業務内容によっても給料が異なるのは当然のことです。
ソフトウェアテスト業界の場合、以下のように異なります。
- テスト実行者
- テスト設計者
- テストリーダー
- テストマネージャー
上記は下に行くほど給料も高くなります。
いわゆる、給料をアップさせたいのであれば、一番下のテストマネージャーを目指すということになります。
JSTQBに >> テストマネージャーという資格試験も用意されていますので、その取得というのを目指してみると給料も上がることは間違いないです。
ただし、テストマネージャーの受験資格に以下2点があります。
- JSTQB(またはISTQB) Foundation Level合格者
- 業務経験3年以上
そのため、まずは、FL(Foundation Level)から目指してみましょう。
- ISTQB
- ISTQBはJSTQBの海外版と考えていただければ問題ないです。
JSTQB頭文字のJはJapanのJで、ISTQB頭文字のIはInternationalのIになります。
JSTQBの資格に関しては以下の記事で詳しく解説していますので、こちらも併せてご覧ください。
ソフトウェアテスト業界の役割
給料を上げるためには以下のことも重要ですが、将来的には役職を上げるというのが1番手っ取り早いです。
- 知識を見につける
- スキルアップする
- 資格取得する
スキルを上げて評価をされる場合は年収において数万円単位でしか上がらない場合もほとんどですが、役職を上げることができれば、年収において数十万円単位、もしくは数百万円単位で上がることも可能になります。
ですから、スキル磨きや資格取得も大切ですが、それは将来的に役職を上げるための段階と見ておけば間違いありません。
最終的に、役職をあげる(キャリアアップ)を念頭に置いて、そこに向けて、それに合った知識を磨き、それに合った資格取得をするということが大切です。
役割については、下記で詳しく解説しています。
役割
上記の業務とも一部重複する部分は出てきますが、役割によっても給料は異なってきます。
ソフトウェアテスト業界の役割とは主に以下になります。
- テストリーダー
- テストマネージャー
- チームリーダーまたは課長
- マネージャーまたは部長
その役割および役職が上がるたびに給料も上がっていくと言う流れになります。
それぞれの業務内容や役割ごとの給料に関してはこちらの記事で詳しく解説しています。
こちらも併せてご覧ください。