サンダーボルト

相手モンスターを全て破壊する。

Concept Challenge: Which Tests Should You Run?のメモ

Tech Dev Guide の これ👇 techdevguide.withgoogle.com

の課題であるこれ👇

www.coursera.org

を見たときのメモ。

メモ

remove(0)メソッドが成功したと判断するための基準は何か?

自分の考え

  • エラーが発生しない
  • 戻り値が正しいか
  • sizeが1減っているか
    • 要素とは別の参照で管理されているから
  • 元indexが1の要素のpreviousがnullになっているか

解説 essential piece(必要不可欠)なものをテストしよう。

  • get(-1)はgetのテストでやるからいらない
  • get(0)のチェックは当然いる
  • get(1)はgetとかaddとかで見るでしょ。1つシフトされたのをget(0)で見てるから不要
  • get(2)もいらない getのテストしてるんじゃないんや
  • sizeのテストはいる。不可欠や

ここまででremoveのテストはきちんとできているはず。しかし、1つめの要素のprevが消したはずの要素を指しているというバグにここまでのテストでは気づけない。

We'll recommend for you to actually break the boundaries of black box testing just a bit.

リストとして正しい動きをしているけど、内部構造がおかしい、というようなバグを見つけるにはデータ構造を考えてテストしないといけないね。 場合によってはブラックボックスバリアを破って(外からテストできることだけじゃなくて、内部構造についての観点で)テストしていかないとね〜