102.テスト界隈で使われる言葉『デグレ=リグレッション』
デグレ
IT業界に入って1か月以内に聞くであろう言葉が「デグレった!」です(ぉぃ
デグレはマンガに描いた通り、何か実装したり、修正した後に今まで動いているところが壊れたり、修正したハズのバグが復活しているときに使われる言葉です。
ほとんどの場合は「デグレ」で使われますが、略さないと「デグレード」かと思います。
名詞の形で言うと「degradation」です。
デグレーションと書いている記事も多いですが、発音を聞くとデグレデーションといった感じ。
リグレッション
日本だとなぜかデグレですが、海外だとリグレッションと言います。
まぁ、なんとなくデグレードの方が悪くなってる感ありますからね!(何
日本国内だと間違いなく「デグレ」の方が齟齬なく伝わります。
リグレッションテスト
この「どこかが壊れた」というデグレ(リグレッション)はとても厄介。
原因がわかると「あぁ、そういえばそこにも影響あったわ!!」となるんですけど、なかなか気づかないのですよね(汗)
それを確認する目的のテストが「リグレッションテスト」です。
何か一つやり方を指すのではなく、デグレを確認する目的のテスト全般をリグレッションテストと呼びます。
じゃあ、どんなことをすることが多いか並べておきますね。
Unit Testで確認
Unit TestをCIでクルクル回して、何か壊れたら検知する方法です。
Unit Testを書いておけばリファクタリングも安心してできますしね。
ただ、Unit testを量産していくと、どこかいじるたびにテストも修正するということも発生します。
どういう風にUnit testを書くかも大事になってきそうです。
API Testで確認
Unit Testとほとんど同じです。
APIの入力と出力を確認するテストをCIなどでクルクル回します。
Unit Testだとそれぞれのモジュール単位ですが、APIレベルになるとシステムの連携も含めた形になります。
テストデータが変わってるゥゥ!
とか
データが使えなくなったァァァ!
とかね。
よく経験しました(^-^;
E2E自動テストで確認
ブラウザを自動的に動かして、forntからバックエンドまで全部通したテストです。
seleniumとかCodeceptJSとかCypressとかPuppetteerとかアレコレあります。
E2E自動テストのネックな部分は、実行速度がUnitTestやAPITestと比べ遅いことと、frontの構成が変わるとすぐ壊れる(xpathなどで作っちゃうと)ということでしょうか。
実行速度については、
そこはUnit Testで見てないですか?
APIのテストでいけないですか?
などなど、ホントに全部E2E自動テストでブラウザを通して見るべきか設計を考えた方がよさげです。
役割が開発とテスターでわかれてるから、こっち側で全部やるしかない!なんて場所も多いです。
すぐ壊れちゃう問題は、ユーザーフローやハッピーパスの生死を確認したい部分はテキストラベルで動かすとか、あとはAutifyなどの自動修復機能が付いたSaaSを使うのも手です。
修正箇所をリストアップして、探索的テストで巡るツアーを行う
自動テスト以外ですと、例えば探索的テストを使う方法があります。
修正したバグをリストアップして、その周辺を探索的テストしてまわっていく、という方法も考えられます。
探索的テストはテスターの技量に依存しますので、なんでも「とりあえず探索的テストで!」みたいにならないようにお気をつけを。
チェックリストを使って確認する
死守したい導線や機能をチェックリストとして繰り返し使えるようにしておいて、それを通すやり方もあります。
もちろんこれで確保できるのは「そのリストにあるところは大丈夫」ということだけです。
網目が大きいザルによるチェックレベルです。
あとはチェックリストではなく、ユーザーがどう使うかのシナリオを数本作ってテストの後半に通して、シナリオ上の導線は壊れてないか、なんて確認は作者はよくやります。
他のデグレっぽい言葉
先祖返り
「先祖返りした!」と使う人もいます。
最近はあまり聞かない気もします。
デグレとほぼ同じですが、バージョン管理ミスやバージョン管理していないなどで、前のファイルに戻っちゃってたりするときに使っていた気がします。
エンバグ(enbug)
こちらはデグレっぽい意味ではありますが、「バグを埋め込んじゃった!」という感じが強いです。
enは入れるという意味。
英語でもこのバグを埋め込むことを「enbug」というようです。
エンバグって英語でなんて言うの? - DMM英会話なんてuKnow?
作者はエンバグという言葉を使う現場にはまだ出会ってないです…。
2020/12/7追記:degradationは海外だと性能劣化の意味
海外で「degradation」という場合は、日本と意味は異なり、性能劣化全般を指す言葉らしいです。