Upgrade to Pro — share decks privately, control downloads, hide ads and more …

テストコードを書きたいけどテスト対象がない。どうする? / What to do to write test?

akihisa1210
February 10, 2022

テストコードを書きたいけどテスト対象がない。どうする? / What to do to write test?

QA Tips LT会 #QATipslt - connpass
https://rakus.connpass.com/event/234065/

akihisa1210

February 10, 2022
Tweet

More Decks by akihisa1210

Other Decks in Technology

Transcript

  1. テストコードを書きたいけど
    テスト対象がない。どうする?
    2022-02-10 QA Tips LT会 #QATipslt
    サイボウズ株式会社 Garoon開発チーム 兼 生産性向上チーム
    小山 晃久(@akihisa1210)

    View Slide

  2. 自己紹介
    小山 晃久 (@akihisa1210)
    サイボウズ株式会社
    Garoon開発チーム 兼 生産性向上チーム
    品質、テスト、CI/CD、アジャイル
    趣味は読書
    Twemoji https://twemoji.twitter.com/content/twemoji-twitter/en.html
    Copyright 2020 Twitter, Inc and other contributors
    Graphics licensed under CC-BY 4.0: https://creativecommons.org/licenses/by/4.0/

    View Slide

  3. Cybozu Productivity Weekly
    • 開発者の生産性向上ネタを毎週共有
    • CI/CDや自動テストの話題も
    • Zenn & Twitterで発信中!

    View Slide

  4. 本題

    View Slide

  5. テストコードを書きたい!
    • テストコードを書いたことがないので書きたい!
    • あのテストフレームワークを使ってみたい!
    • 特に理由はないが書きたい!

    View Slide

  6. テスト対象がない……。
    • 何にテストコードを書こう?

    View Slide

  7. なければ作ろう!
    • Webアプリケーションを作成する類の書籍を買ってくる
    • サンプルコードにテストを追加しながら進める

    View Slide

  8. 書籍を選ぶ際の注意
    • 特定のユニットテストツールを使いたい場合は、そのツールが対
    応している言語と同じ言語でアプリケーションを作る書籍を選ぶ
    • E2Eテストツールはテスト対象が何で実装されているかには依存
    していないので大丈夫
    • できれば新しめの書籍を選ぶ(余計な所でハマらないために)

    View Slide

  9. 静的解析

    View Slide

  10. 静的解析を導入する
    • 問題のある書き方を検出・自動修正する
    • 特定のスタイルを強制する
    • 「Linter」「Formatter」などで検索!

    View Slide

  11. (参考)パッケージマネージャー
    • プロジェクトごとに、そのプロジェクトが使うパッケージを管理す
    るツール
    • ツール導入時に必要になることも

    View Slide

  12. ローカル開発環境
    静的解析
    ソースコード

    View Slide

  13. CI

    View Slide

  14. CI?
    • Continuous Integration
    • コードに変更が加わるごとにビルドやテストを行う
    • 早いフィードバックで小さく修正
    • 自動トリガーの恩恵(手動だと忘れる)

    View Slide

  15. CIを設定する前に
    • コードをソースコード管理システムで管理する
    • サンプルコードのライセンスを要確認
    • プライベートリポジトリと連携できるCIシステムもある

    View Slide

  16. CIの設定
    • 設定ファイルをソースコードと合わせて管理する
    • CIシステムがソースコード管理システムからコードを取得できる
    ようにする
    • CIシステム上で静的解析が実行されるようにする

    View Slide

  17. ローカル開発環境
    静的解析
    ソースコード
    ソースコード管理システム
    ソースコード
    静的解析
    CI システム
    ソースコード

    View Slide

  18. ユニットテスト

    View Slide

  19. ユニットテストを書く
    • 関数やクラスに勝手にテストを書く
    • テストが書きづらい場合は、テストが書けるように修正してみる
    • ユニットテストもCIで流す

    View Slide

  20. ローカル開発環境
    静的解析
    ユニットテスト
    ソースコード
    ソースコード管理システム
    ソースコード
    静的解析
    CI システム
    ユニットテスト
    ソースコード

    View Slide

  21. E2E テスト

    View Slide

  22. E2Eテストを書く
    • ローカル開発環境でWebアプリケーションを立ち上げる
    • E2Eテストを書いてみる

    View Slide

  23. ローカル開発環境
    静的解析
    ユニットテスト
    E2Eテスト
    ソースコード
    ビルド
    デプロイ
    ソースコード管理システム
    ソースコード
    静的解析
    CI システム
    ユニットテスト
    ソースコード

    View Slide

  24. E2EテストをCIで動かす
    • CIシステムがアクセスできるところでWebアプリケーションを動
    かす
    • CIシステム上でテストを実行する

    View Slide

  25. ローカル開発環境
    静的解析
    ユニットテスト
    E2Eテスト
    ソースコード
    ビルド
    デプロイ
    ソースコード管理システム
    ソースコード
    静的解析
    CI システム
    ユニットテスト
    E2Eテスト
    デプロイ
    ビルド
    ソースコード

    View Slide

  26. 最後に

    View Slide

  27. 全部やらないといけないの?
    • やらなくても大丈夫です
    • 興味のあるところ、開発の効率が上がるところから

    View Slide