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

落ちてほしかった単体テスト

Avatar for OPTiM OPTiM
October 09, 2025
85

 落ちてほしかった単体テスト

2025/10/07 開催「【リジェクトConライク】Re:cycle〜Kaigi on Rails 2025編〜」での発表資料です。

https://timeedev.connpass.com/event/368227/

Avatar for OPTiM

OPTiM

October 09, 2025
Tweet

More Decks by OPTiM

Transcript

  1. © 2019-2025 OPTiM Corp. All rights reserved. 2 伊藤(@kaigokan) ◼株式会社オプティム

    サービス開発統括本部 マネージャー 業務 ◼Ruby on Railsエンジニア 10年目くらい ◼ずっとOPTiM Bizという製品を作っています ◼会社にAIを導入したりすることもあります Ruby ◼自由ですき ◼DSL書きやすいですよね 自己紹介
  2. © 2019-2025 OPTiM Corp. All rights reserved. 3 ???「フフ・・・落ちてけっこう!」 ???「

    単体テストの仕事は落ちることだからな」 仕事しなかった単体テストの話をします
  3. © 2019-2025 OPTiM Corp. All rights reserved. 6 さ ま

    ざ ま な ス マ ー ト デ バ イ ス が 登 場 し 、 ビ ジ ネ ス シ ー ン は と て も 便 利 に な り ま し た が 、 一 方 で は リ ス ク や 課 題 も 抱 え る こ と に … サービスの紹介 スマホやタブレットの ビジネスシーンにおける 幅広い課題を解決 3.不必要なアプリの利用制限 企業の内部人的要因による 個人情報漏洩元件数 6014 3527 567 767 795 7000 6000 5000 4000 3000 2000 1000 0 2019 2020 2021 2022 2023 ※個人情報保護委員会 令和元年〜令和5年の年次報告文書 情報システム部が 抱える課題 2.業務アプリ配信 1.情報漏洩対策
  4. © 2019-2025 OPTiM Corp. All rights reserved. 7 そ ん

    な 端 末 管 理 の お 悩 み を 解 決 す る の が 「 O P T i M B i z 」 4 つ の 機 能 を 中 心 に お 客 様 の 端 末 管 理 を D X サービスの紹介 スマホやタブレットの ビジネスシーンにおける 幅広い課題を解決 紛失/盗難/情報漏えい対策 デバイス機能制限 グループ設定/セットアップ • ウ ィ ル ス 対 策 設 定 • ス ク リ ー ン ロ ッ ク ポ リ シ ー 設 定 • リ モ ー ト ロ ッ ク • リ モ ー ト ワ イ プ • 位 置 情 報 取 得 • 利 用 禁 止 設 定 (ホワイトリスト/ブラックリスト) • W e b フ ィ ル タ リ ン グ ( URL指定/カテゴリ指定) • ア カ ウ ン ト 設 定 抑 止 • 部署/グループ単位の設定 • Wi-Fi設定 • プロキシ設定 • Exchange ActiveSync 設定 • VPN設定 • クライアント証明/CA証明書配信 アプリケーション配信/管理機能 • ア プ リ ケ ー シ ョ ン 配 信 (サイレントインストール対応) • 企業専用アプリストアの作成 ( オンデマンド配信) • ア プ リ ケ ー シ ョ ン へ の 規 定 値 配 信 ( App Configuration )
  5. © 2019-2025 OPTiM Corp. All rights reserved. 8 長 き

    に 渡 っ て M D M シ ェ ア N o. 1 の 実 績 と 信 頼 が あ り ま す 。 サービスの紹介① スマホやタブレットの ビジネスシーンにおける 幅広い課題を解決 MDMシェア14年連続No.1※1 各業界向けMDMなど、全20部門でシェアNo.1※2 18万社以上の企業様が OPTiM Bizをご利用中※3 これまでに700以上の機種を サポートしています※4 ※1 出典:デロイト トーマツ ミック経済研究所 「クラウドサービス市場の現状と展望 2013年度版 https://mic-r.co.jp/mr/00735/」IT資産管理(MDM含む)市場「合計売上高」2011年度〜2012年度実績(2013年発刊)、 「コラボレーション/ コンテンツ・モバイル管理パッケージソフトの市場展望 2014年度版 https://mic-r.co.jp/mr/00850/」MDM市場動向「MDM出荷ID数(SaaS・ASP含む)」2013年度実績(2014年発刊)、 「コラボレーション/コンテンツ・モバイル管理パッ ケージソフトの市場展望 https://mic-r.co.jp/mr/01480/」MDM市場動向「MDM出荷ID数(SaaS・ASP含む)」2014年度〜2017年度実績(2015〜2018年発刊)、 「コラボレーション・モバイル管理ソフトの市場展望 https://mic- r.co.jp/mr/03230/」MDM市場「MDM出荷ID数(SaaS・ASP含む)」2018年度〜2023年度実績および2024年度見込(2019年〜2024年発刊)より。 ※2 デロイト トーマツ ミック経済研究所 2024年度発刊「コラボレーション・モバイル管理ソ フトの市場展望 2024年度版」(https://mic-r.co.jp/mr/03230/)の2023年度実績のうち、「OPTiM Biz」が1位の評価を得た部門の数をオプティムが集計 ※3 2019年6月25日、当社集計。 ※4 2022年7月、自社調べ。
  6. © 2019-2025 OPTiM Corp. All rights reserved. 10 環境 ◼Ruby3.4.5

    ◼Rails8.0 そこそこの大きさ ◼LOC: 122,993 ◼Test LOC: 522,271 ◼テストケース: 102,865 bundle exec rails stats
  7. © 2019-2025 OPTiM Corp. All rights reserved. 15 ※わかりやすいよう変更しています ユーザーの情報をハッシュ化する関数

    ◼ハッシュ値が変わったらXXXをする。という箇所 に利用されていました どんなテストが書かれていたのでしょうか 対象のメソッド
  8. © 2019-2025 OPTiM Corp. All rights reserved. 18 Hashクラスのinspectメソッドが変更された ◼Ruby

    3.4.0から出力フォーマットが変化。 ◼https://bugs.ruby-lang.org/issues/20433 何が起きたか
  9. © 2019-2025 OPTiM Corp. All rights reserved. 22 ハッシュ値が変わったらXXXをする。という箇所に利用されていました ◼「XXXする処理」が意図しないユーザーに発火

    inspectをgrepしても見つからなかった ◼to_sはinspectを呼ぶことを見落としてしまった テストは落ちなかった ◼そう、be_presentだからね! ◼期待する挙動が変化していても検知できなかった つらかったポイント
  10. © 2019-2025 OPTiM Corp. All rights reserved. 24 単体テストのしごとは落ちること ◼可能な限り厳密に

    ◼テストの期待値は具体的に書く その他 ◼実は変更のあるinspectにログを出すパッチを当 てて、単体テストを実行すれば拾えた まとめ