Open15

はじめてのテスト

kzk4043kzk4043

テスト

テストに関する重要な概念とかをメモしたい

kzk4043kzk4043

テストは個人的に勉強がそこまでわくわくしない問題はあるな…なにかものができるわけじゃないから。役に立ちそう、みたいな期待はもちろんあるが。

kzk4043kzk4043

DI

依存性注入

https://zenn.dev/atsu77/articles/230612_dependency_injection
https://qiita.com/okazuki/items/a0f2fb0a63ca88340ff6
https://zenn.dev/tokium_dev/articles/dependency-injection-watanabe

そもそもテスト系から生まれた言葉なのかどうか不明だが、オブジェクトや関数同士が依存していると当然テストしずらいから、依存関係は引数とかで外から入れましょう、っていうこと?そうすれば別々にテストしやすいし、モックとかも使いやすいやん、という

https://qiita.com/okazuki/items/0c17a161a921847cd080

もともとはSOLID原則関連の話らしい

DIは制御の反転の一種で、オブジェクトの作成と利用について関心の分離を行い、疎結合なプログラムを実現することを目的としている。

DIをするとテスタブルになるものの、インスタンスの生成が面倒になる(new ObjectA(new ObjectB, new ObjectC)みたいになる)。それを解決するためにDIフレームワークというものがあるらしい(バックエンドの話?)

kzk4043kzk4043

Property Based Testing

https://zenn.dev/ryo_kawamata/articles/22d4408bd1f138

Property Based Testing は、Haskell のライブラリ QuickCheck からはじまったテストスタイルで、定義された条件に合わせて自動生成された膨大な値に対してテストを行う手法です。

ランダムに値を生成しまくって、テストしまくる手法。
fast-checkというjsライブラリでいうと、標準で100回テスト、pre/filter/mapを使い生成値を調整してテストする。
対して、開発者が特定のシナリオやケースを考え、それに対する期待結果を定義する僕らが普通にイメージするテストはExample Based Testing。

たぶん、こういう時はバグる可能性があるかもなという具体的な値(Example)ベースでテストを考えるか、このPropertyはXXという条件のある整数値であるべきだ、みたいなあるべき姿を定義してランダムにテストするか、的な

kzk4043kzk4043

テストの分類

https://applause.saaspresto.jp/blog/software-testing/
https://qiita.com/ktarow/items/8c3d94d6c21a0c86b799

粒度?フェーズ?による分類

  • 単体テスト:モジュール単位
  • 結合テスト:複数モジュール
  • システムテスト:システム全体
  • 受け入れテスト:顧客の受け入れテスト

実行方法?による分類

  • 動的:実行してテスト。jest/playwrightとか
  • 静的:実行せずテスト。静的コード解析とか。Linterとかtypescriptとか

技法?による分類

  • ホワイトボックス:内部構造を理解してテスト
  • ブラックボックス:内部構造分からずテスト
  • グレーボックス:中間

テストの目的?による分類

  • 機能テスト:ソフトウェアが仕様どおりに動作するかどうかを検証
  • 非機能テスト:ソフトウェアの性能、安全性、セキュリティなどの品質を検証

テスト手法?

  • スナップショットテスト
  • リグレッションテスト
    • ビジュアルリグレッションテスト

マーケティング文脈?

kzk4043kzk4043

スモークテスト

storybookでスナップショットテストのスナップショットファイルを見てたらsmoke-testと書いてあった

https://www.qbook.jp/column/1588.html

コンパイルやビルドのエラーは出なくなった後、できあがったソフトウェアが機能テストなどの本格的なテストを実施可能か判断するための予備的なテストという位置づけになります。
スモークテストという名称の語源は、電気工作の分野の通電テストにおいて、基板に電流を流して発煙の有無を確認したことに由来すると言われています。

https://www.kzsuzuki.com/entry/2021/04/11/141010

サニティテストというのも出てきた。
みんな好き勝手テストを増やしてないか?笑

うーん、なんかいまいち具体性がないが、最低限動くのかどうかみたいなテスト?

kzk4043kzk4043

ライブラリ、フレームワークとその概要

  • Jest
  • Testing Library
  • storybook
  • Chai
    • Cypressで使われてた
  • Mocha
    • Cypressで使われてた
  • Playwright
  • Cypress