SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2022 Summer レポート(PR)

テストの属人化を克服し、失敗しないテスト自動化のための設計「キーワード駆動テスト」とは【デブサミ2022夏】

【A-6】UIテスト自動化におけるメンテナンス性向上と、属人化を克服するテクニック

  • このエントリーをはてなブックマークに追加

 開発の効率化にあたって、テスト自動化は欠かせないものになってきた。だが一方で、テスト自動化には「ツールの更新が面倒」「結局は手でやった方が早い」といった負の側面も聞こえてくる。そこでテスト専門会社であるバルテスの石原一宏氏と江添智之氏がテスト自動化の問題を、事例を交えながら解説を行った。

  • このエントリーをはてなブックマークに追加

(上)バルテス株式会社 テスト・アライアンス事業部 事業部長 石原一宏氏、(下)バルテス株式会社 クロス・ファンクショナル事業部 R&C部 マネージャー 江添智之氏
(上)バルテス株式会社 テスト・アライアンス事業部 事業部長 石原一宏氏、(下)バルテス株式会社 クロス・ファンクショナル事業部 R&C部 マネージャー 江添智之氏

属人化による「テスト自動化」の落とし穴とは

 テストの専門会社として、下流工程を中心に結合テスト以降のアウトソーシングテストを年間2,600件以上こなすバルテス。同社による「テスト自動化の経験」に関する調査によると、「現在実施している」が42%、「現在実施していない」が19%、「自動化したことはない」は39%という結果が得られている。なんとテスト自動化の経験者のうち、約3分の1はやめてしまっているのだ。

テスト自動化を実施した人の約1/3はやめている
テスト自動化を実施した人の約1/3はやめている

 その理由としては、「自動化担当者がやめたため、誰もメンテナンスできない」「ツールの更新が面倒で使わなくなった」「テストスクリプトの更新が仕様と合っているか不安」「結局は手でやった方が早い」といった悩みが挙げられる。

 さらに、テスト自動化に関する課題を聞いてみると、「知識・スキル不足」41%、「工数などのリリース不足」31%、「コストがかかりすぎる」27%と、99%が自動化に何らかの課題を抱えているのだ。

 では、これらの課題をどう対策したらいいのか。セッション前半は、バルテスのテストアライアンス事業を取りまとめる石原氏から、テスト自動化に関する現状の課題とその解決策について解説が行われた。石原氏はソフトウェア品質やテストに関するセミナーや書籍も執筆・監修しているソフトウェアテストのスペシャリストでもある。

 まず、現在のテスト自動化とは「テスト実行」を自動化することを指す。これまで人間が手動で行っていたUIテストを自動化することによって、作業時間の短縮や工数削減、見落としなどの人為的事故の防止などが期待できる。

 手動化テストの場合、テスト対象システムの分析やどんなテストをするかを整理して、テスト設計し、それをもとに実装していく。テストを実行した結果、NGであればレポートを作成し、修正を行うといった流れが一般的だ。

 それに対してテスト自動化では、自動化環境を構築し、テストスクリプトを作成したら、テスト実装の部分をツールが実施してくれる。

テスト自動化の流れ(自動テストの場合)
テスト自動化の流れ(自動テストの場合)

 だがメリットだけではない。冒頭紹介したように、テスト自動化経験者の約3分の1は挫折し、99%が何らかの困難を抱える落とし穴もあるのだ。

 「とりあえず」「なんとなく」自動化してみようというのが一番トラブルを招くもと。ツールの進歩によって導入が容易になった反面、メンテナンスに手間がかかるといったデメリットもある。導入コストが回収できないまま、ツールが使われなくなってしまうことも少なくはないと石原氏は説明する。

 「損益分岐点で見ると、イニシャルコストを回収するためには、テスト自動化ツールを繰り返し使うこと。つまり、使い続けることでROI(費用体効果)は向上します」(石原氏)

 このテスト自動化を阻むポイントをまとめると、「属人化」という課題に集約される。自動化技術の属人化でいえば、プログラム技術、自動化ツールの習熟、環境構築・メンテナンスなど。テストの属人化では、テストケースとスクリプトの二重管理やメンテナンスだ。

 属人化が引き起こしたテスト自動化の失敗例も紹介された。以下の4事例である。

事例1:使われなくなったテスト自動化

 開発エンジニアがかけもちして対応していたが、「多忙でメンテナンスができない」「手動テストが増え、コストも増加してしまう」など、十分なリソースが確保できずに「メンテナンス負債」が溜まっていくパターンである。

事例2:違う言語で作り替えになったテスト自動化

 自動化テストを作っていたエンジニアが、自動化技術を引き継がずに退職してしまうケース。例えば、Javaエンジニアがつくった自動化テストをRubyエンジニアが新規に作り直す場合、一度リセットするため、倍のコストがかかってしまう。

事例3:自然言語をスクリプト言語で書き換えになったテスト自動化

 テストケースを日本語で書いたがために、自動化ツールを走らすスクリプト言語でも書かなくてはならず、二度手間になってしまうパターンもある。仕様変更やメンテナンスのたびに両方の更新作業をすることになり、テストケースとテストスクリプトが一致しなかったり、テスト漏れといったトラブルも起こったりする。

事例4:テスト自動化を難航させるテストケース

 最後は属人化の最たる事例だ。テストケースの前提条件をざっくり書いているために、テストデータの誤りや期待結果の確認もれなど、自動化実装が終わらないケースである。

 どの事例にも共通しているのは、「費用対効果が悪いこと」だと石原氏は強調する。では、属人化を解消し、黒字化させるにはどうしたらいいのか。後半のセッションは江添氏にバトンタッチし、前半で石原氏が挙げた失敗例に対して、どうすれば解決することができるのか、現場の実例に即して、その対策のポイントについて語られた。

次のページ
失敗しないテスト自動化のポイントは「属人化」対策

関連リンク

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Developers Summit 2022 Summer レポート連載記事一覧

もっと読む

この記事の著者

馬場 美由紀(ババ ミユキ)

 エンジニアとテクノロジーが好きな編集・ライター。エンジニア向けキャリアサイト「Tech総研」「CodeIQ MAGAZINE」、Web技術者向けの情報メディア「HTML5 Experts.jp」などでライティング、コンテンツディレクション、イベント企画などを行う。HTML5 開発者コミュニティ「h...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16382 2022/09/20 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング