エンジニア女子の日常

エンジニア女子が本、映画レビュー、ダイエット、仕事、技術について書いているブログです。

テスト技法で学ぶ!テストケース作成で大事なこと〜「ソフトウェアテスト技法ドリル」を読んで〜

みなさんは、どうやってテストケースを作成していますか?

 

最初、テストケースを書き方って困りますよね!

そこで、QAエンジニアの友達に紹介された

を読んでみました。

 

本書を読んで、テストケースの作成で考えることと具体的な技法についてちょっと紹介していきます。

  

ソフトウェアテストの基本

ソフトウェアテストとして

  • 網羅性
  • ピンポイント

を意識することが大切です。テストのうまさは、網羅性で決まります。

網羅性を高めるには?

いろいろな視点からソフトウェアを捉えて、テストケースを考えていくことが大切です。

ソフトウェアテスト技法ドリルでは、以下の視点でいろいろな技法が紹介されていました。

  • 立体
  • 時間
  • 多次元

ソフトウェアテストの視点1: 点

点での捉える方について、まとめます。

1, 仕様書を見ながら、怪しい箇所を認識

最初のうちは怪しい箇所がどこかわからないと思うのですが、テスト経験が増えてきたり、技法を知っていくと「ここ怪しいな」って場所が見えてきます。

過去のバグの経験がテストケースを考えるときに参考になるため、バグを蓄積していてことが大切です。

探索テストっていう単語を聞いたことあるかもしれませんが、探索テストとは、経験から怪しそうなところに重点をおいて探索し、テストしていく方法です。

正しく、経験を用いてそのシーンそのシーンを点を捉えて、テストしていく方法ですね。

探索テストは、個人の経験に依存しすぎないように、チームそれぞれの点の視点を共有していくのも大切です。

2,間、対象、類推、外側を考える

データ間、データ対象、データに似ているデータ、データの対象外のデータなど、具体的なデータに対して、これらを考える癖をつけると、テストケースが見えてきます。

3, 意地悪条件を考える

正攻法を考えていると、予想外の動作でのテストケースを逃してしまうことがあります。なので、常に意地悪の視点を持ってテストを見ましょう。

 

ソフトウェアテストの視点2: 線

線で捉える技法について、紹介します。

同値分割と境界値分析

同値分割は、てスト結果(ソフトウェアの振る舞い)をグループ分けし、それぞれのテスト結果になる代表的なテスト条件を選択してテストするという考え方です。

境界値分析は、同値分割で得られた同値クラスの境界や端、その近くに注目してテスト条件を考えるという技法です。

 

同値分割と境界値分析をする時は、以下の点を気をつけることが大切です。

  • 線を使って、視覚的にまとめる
  • 複数の条件が重なる時、1つしかテストが出来ない場合が存在するので注意
  • 設計仕様を理解していないと、後々気付くケースになる

負荷テスト

負荷テストでは、以下の点を気をつけることが大切です。

  • 一定の基準値を超えてもテストをする
  • 一定の基準値を超えた場合は、致命的な事態が発生しないことを確認する

ソフトウェアテストの視点3: 面

面で捉える技法を紹介します。

ドメイン分析テスト

ドメイン分析テストとは、同時に複数の変数をテストする方法です。以下の資料がわかりやすいので、おすすめです。

 

面の視点で捉える時のそのほかのテスト技法

他にも面として捉える方法として

など紹介されていました。

少し難しいので、ここでの説明は省きます。 

ソフトウェアテストの視点4: 立体

面の視点でも足りない場合に、立体の技法を検討します。

  • HAYST法 
  • ペアワイズ

この説明をすると、ブログ記事が1つできてしまうので、時間がある時に再度まとめます。後、QAエンジニアの友達に聞く限り、普段の業務で使うことはほぼないってことだったので、もし気になる人は、調べてみてください。

note.com

 

ソフトウェアテストの視点5: 時間

時間で捉える技法を紹介します。

状態遷移テスト

ソフトウェアの動作中に様々に変化する状態に着目したテスト技法です。

最初に、ソフトウェアのプロセスを整理し、状態遷移図と状態遷移表を作成します。 

状態遷移図

 状態遷移図

状態遷移図

 

簡単に書くとこんな感じです。 

状態遷移テストでは、全ての状態遷移のケースを実施します。

状態遷移テストの実際

  • 遷移図がないなら、新しく遷移図を書く
  • 状態数が多すぎる場合は、組み合わせ数を論理的に減らす
  • どこまでの状態を取り上げるかは、「ハードウェアの状態」「ソフトウェアの状態」「外の世界の状態」で決めていく

のように、行っていきます。

 

他にも、時間の視点で捉える技法として「並列処理テスト」もあります。

ソフトウェアテストの視点6: 多次元

多次元の視点でのテスト技法を1つ紹介します。

シナリオテスト

シナリオテストとは、シナリオをベースにしてテストする技法です。

シナリオの作成のポイントは

  • 人の動きを中心にシナリオを作成
  • 仮定を置き、重点を絞った上で狭く、深くシナリオを書く
  • 6W2Hを意識した、具体的に書く/li>
  • 例外処理シナリオも用意

です。

多次元の視点で捉える時のそのほかのテスト技法

シナリオテスト以外にも、多次元の視点で捉えるテスト技法には

  • 受け入れテスト
  • サンプリングテスト
  • 統計的テスト

などがあります。

テスト技法でみるテストケース作成で大事なこととは?

これまで、いろいろな視点でテスト技法を紹介してきました。

テスト技法を見てきてわかるように、いろいろな視点からテストケースを考えることが大事です。

そのために、過去の障害やバグをログとして残して置き、なぜ起きたのかを考えた上で、自分のテスト視点を増やしていくのが良さそうです。

 

reviews.hatenadiary.jp

 

システムテストチェック

システムテストチェック