HOME > 活動報告 > イベント報告 > JaSST'21 Tokai

イベント報告
 ソフトウェアテストシンポジウム 2021 東海

2021年12月3日(金) 於 オンライン開催

ソフトウェアテストシンポジウム 2021 東海

はじめに

第13回JaSST Tokaiがオンライン開催された。実行委員を含め、約150名もの参加者が集った。

実行委員長の矢野氏より、今年のテーマである「みんなでやろう! ソフトウェアファースト時代のテストの在り方」の紹介と、軽快でシュールなジョークが交わされた。
途中、「実行委員長挨拶では場が温まらない」と自虐を挟みつつも、参加者が月曜から頑張れるようにしたいと締めくくった。

基調講演
「もうちょっと楽に単体テストしませんか?」
高橋 寿一 氏(デジタルハーツ)

本日の主題

近年、ユーザーの求める製品をいち早く市場へ投入することが求められており、ウォーターフォールからアジャイルに主流が切り替わりつつある。この変化に伴い、品質に対してどうしたいのかというフレームワークと、その具体的な作業指針が求められている。これに対しては、テスト担当者と開発者で協力し、取り組みを考える必要がある。実際の現場ではリファクタリングへの取り組みが不足し、コードが汚く・長く・複雑になり、市場バグの流出原因となっている。

そこで、本講演では以下の2つを主題として掲げた。

  • Shift Left(単体テストで上流品質担保)しなければ市場バグ流出はなくならない
  • 正しくShift Leftすれば、あなたの仕事は圧倒的に減る

本講演での品質の定義を「有限な時間の中で、最適な品質を探す」とした。その切り口として上流で効率的なテストを行う、(クリティカルなバグの検出を目的としない)膨大なシステムテストは無意味とした。前者はバグを予防する視点を含み、単体テストで担保しているか、ユーザーが求めているソフトウェアかどうか事前に妥当性確認されているかなどをあげた。後者は、バグを狙えない・実行速度の遅いような組み合わせテストは注意が必要だと促した。

Dailyで上流品質を担保する3つのこと

上流品質を担保するために最低限すべき活動として、単体テスト、リファクタリング、要件仕様のテストケース展開の3点を紹介した。

1. 単体テスト

コードカバレッジの網羅率に適切な値はないとしつつも、目安としてエラーハンドリング処理以外を網羅できる75%がよいと話した。これはテスト担当者が原因を分析する際のしやすさ、単体テストが正しく書けているか判断する一つの基準でもある。上記の対応が難しいレガシーコードでは、「2:8の法則」や着手した時より少しだけ網羅率をあげるとよい。「2:8の法則」とは、コードの2割の箇所に対して単体テストを記述し、8割以上のバグを狙う活動である。2割の重要な箇所の特定方法として「よく変更されるファイル(Hotspot)」「長いファイル」「複雑度が高いファイル」は統計的にバグが多発するとした。

2. リファクタリング

リファクタリングの対象選びでも「2:8の法則」を適用できる。Hotspot値・複雑度共に高いものを対象にすると効果的である。また、FPあたりの労働時間の増加や複雑なコードのバグ修正成功確率などのデータを、開発者やマネージャーに示すことで、リファクタリングの納得感を得られるとした。

3. 要求仕様のテストケース展開

システムテストレベルでバグを検出するのではなく、レビューの段階で見つけられるものは見つけたい。その手段を紹介した。
要件仕様の漏れを防止するため、要件仕様とテストケースのトレーサビリティは必要である。たとえアジャイル開発であっても、開発者は要件仕様を文書化することを推奨する。これによりテスト担当者のシステム理解度が上がると共に、レビューにより要件仕様への正確性を積み上げることができる。要件定義を明確に行わないことで不具合は2.7倍になるというデータが紹介された。

品質保証の取り組み方(実例)

テスト担当者の品質のフレームワークの考え方について説明した。

ウォーターフォールではテストレベルを重ねることで、単体のバグであっても後工程で検出することができた。一方、アジャイルではテスト担当者はイテレーション内で各テストタイプを担保する方法を考えなければならない。それだけではなくシステム全体を理解したうえで、どの部分の品質が低く、どこがテストできないのか、しなくてよいのかの特定も必要である。例えば、Race Condition(スレッドセーフ)などテスト実行の難しい箇所に対して明確にし、開発者へのレビュー実施の確認をする必要がある。

続いて、自動化の取り組みをする際には、イテレーション内のスピード感に耐えられるか確認しなければならない。特にシステムテストレベルの自動テストは実行時間やメンテナンスコストがかかる点に気をつけなければならない。非機能系の要求も含めたすべてのテストは夜に開始し朝に終わることが好ましい。これにより翌日に開発者は安心して開発できるようになる。CI/CDを回したタイミングで出力される定量的な品質指標を確認し、コードの網羅率を管理することもテスト担当者の役割の一つである。

最後にNext Stepとして、新規に書く関数だけでも単体テストを書いてCI/CDフレームワークにいれること、品質分析をすることから取り組み始めるとよいと締めくくった。

Q&A
Q:
単体テストカバレッジ60%の中で大きなバグを見つけるコツはあるか?
A:
テスト担当者として、大きなバグの定義が必要である。要件仕様の実装漏れなどが考えられる
Q:
テストチームのメンバーはほとんどがソースコードを読めない状態である。将来を考えるとテストチームに教育を行って、単体テストを書いていくほうがよいか?
A:
テストチームが単体テストを書く必要はない。ただ、レビューする責務はあるので、コードを読むことやコードの品質指標を理解できる必要はある
Q:
開発チームが単体テストを実施していない。単体テストの有効性を理解してもらうために何をしたらよいか?
A:
「2:8の法則」をマネージャーに伝え、推進してもらう。複雑度が高く単体テストの記述が難しい場合は、外注し複雑度を下げたうえで単体テストを書けるようにするとよい
Q:
最近では自動化専任の担当者がチームにいる場合があるが、高橋氏の理想とするチーム構成はあるか? 例)開発者、CI/CD担当者、自動化担当者、QA担当者 など
A:
テストチームがCI/CDをコントロールし、テスト自動化と品質定量化に関わっている状態が好ましい。QAの思想がなければ品質定量化はできず、定量的な品質を取得するにはCI/CDに触れられなければならないためである
Q:
テスト担当者がコードを読めるようになるための教育を施した実例はあるか?有効な教育の方法として、どのようなやり方があるか?
A:
日本ではコードを書けないことを自負する人がいる。社内でお金を出して、コードを学んでもらう。レビューできるレベルでよいことを伝え、コードに対する恐怖を取り除く取り組みが考えられる
Q:
単体テストを教えるのは誰がよいか?開発者がテスト担当者に教えるのか、テストチームの中でコードを書ける人が教えるのか
A:
後者がよい
Q:
イテレーションを進めるうえで、定量的な品質指標として使っているものを教えてほしい
A:
3つか4つのシンプルで必要なものに絞るとよい。自動テストがパスすること、要件仕様に対する結果、コードの網羅率、コードの品質指標を見ている。追加で、あるタイミングで落ちる・Race Conditionなど再現が難しく、市場バグとして残りそうなものを見ている
Q:
バグデータベースは何を含むか?
A:
単体テストレベルで検出可能なバグであるが、後工程で検出されたものである
Q:
自動テストツールでおすすめはあるか?
A:
システムテストレベルだと実行速度の問題がある。そのため、xUnitなど小さなフレームワークがおすすめである
Q:
テスト担当者のコードリードスキルについて質問する。経営者の関与についてどのようにお感じか?
A:
経営者はコードを書くことができる必要はないがソフトウェアを理解してほしい。バグが開発期間中に何百件もあがり、それを潰すのが開発のあるべきスタイルではない。要件仕様を作った都度、コードを書いた都度にバグを潰すことで開発期間・コストを減らすことができる
筆者感想

穏やかな語り口調で、身振り手振りを交えられており、聴衆を引き込むようなライブ感が印象的であった。

本講演ではテスト担当者として、開発者や単体テストとの関わり方について沢山のヒントが散りばめられており、システム全体やビルドパイプラインに関与する必要性も強く感じた。テスト担当者に対してそっと背中を押してくれる、素晴らしい講演であった。筆者も限られた時間の中で効果の高い活動ができているか、定期的にふりかえっていきたい。

ライトニングトーク(LT)

「テスト本の読書会のすすめ」
 長友 優治 氏(クラスメソッド)
筆者感想

筆者はテスト本をエンジニアに興味を持ってもらえるか不安になっていたが、長友氏のエンジニアが一番テスト結果を気にされているかも、との話を聞いてハッとさせられた。同じ知識を共有すると、話しやすい環境が生まれるということで、読書会の開催は思っていたよりも敷居は低く、やり得であることに気づかされた。

「Web系のドキュメンテーションいろいろ」
 はな丸 氏(秘密ではない花園)
筆者感想

プロジェクトの開始時にQCDのトレードオフスライダーを作ると、優先度決めが早くなりプロジェクトを進めやすくなる。例として優先度D>Q>Cのお行儀の悪いテストを紹介した。実はテストケースがテンプレート展開されていることにより、お行儀のよいテストケースよりカバレッジは高いと話した。
テスト活動への様々な状況に対して柔軟に対応する姿勢や、テンプレート化により設計を早くする方法は参考にしたい。

「自動車ソフトウェアテスト担当者シラバスって読みました?」
 山上 直宏 氏(ISTQB CTFL-AuT翻訳WG)
概要

組織のプロセス改善をする第一歩として、JSTQBのAutomotive SPICEをすすめた。シラバスでは各プロセスの中で何をするとよいのか書いてあり、テストのアーキテクチャを組み立てる際の全体感の参考になると話した。プロセスのアセスメントを参考にすると共に、本事例のような上流でバグの作りこみをなくす活動が広がってほしい。

「テスト管理ツール (TestLink) の活用」
 井関 武史氏(テストの街「葛飾」)
概要

テスト管理ツールを利用して、開発プロセスとテストプロセスを融合させて、製品・サービスの品質に対して、地図・テストの戦術を作り共有する活動をしたいと語った。最後に、井関市のTestLinkの情報共有とテストの街「葛飾」の紹介があった。テスト管理ツールを起点とした、テスト活動の幅広さを感じた。

特別講演
「アメリカで働くQAエンジニアの現場から - Ask Me Anything! -」
 植月 啓次 氏(Amazon.com Services LLC)

自己紹介

エンジニアを5年経験したのち、QAを15年以上経験されている。日系電気メーカー、外資系ECサイトを経て、2019年から渡米してAmazonに在籍している。現在アメリカの西海岸に住んでいる。

Amazon内の組織構成

製品開発の体制(役割)はSoftware Development Engineer(SWE) / Quality Assurance Engineer(QAE) / Software Development Engineer in Test (SET, SDET) / Technical Project Manager(TPM) / Product Manager(PM)であり、TPM はスケジュール・課題管理などの、プロジェクトを推進する人である。その上の役割として人に関わる仕事の割り振りをするPeople Managerがいて、更に上にはProgram Managerがいる。

QAEに関する組織としては、以下3つがある。

  • 開発内QAE
    • 製品の品質を確保する
  • QAサービス内QAE
    • 開発チームに対してQAサービスの提供をする第三者組織。ローカライズを確認する
  • QAコミュニティ
    • バーチャル組織なので誰か人が固定でいるわけではない
    • 技術標準化、悩み事の対応、コンサルティング運営
    • Principle QAEが運営
Q:
QAEってどれくらいの人数がいるのか?SWEに対しての比率とか
A:
1:3~1:4なので、やることは多い。絶対数は足りていない
Q:
インフラ系(Ops)の方々との関係性はどうなっているか?
A:
インフラ(Ops)は自分達のチームで管理する
Q:
テスト自動化におけるQA, SDET, SWEの役割の違いはどこか?先ほどの高橋氏の話のように、テストスクリプト作成はSWE, SDETで、レビューがQAとなっているのか?
A:
QAEはテスト自動化全体を見なければならない。テスト計画を元にしたテスト戦略では、自動化の範囲や順序・テスト環境に対する要求などを決める。SDETがテストツールの開発、環境構築をする。SDETとSWEはテスト環境を構築する時に共同でやる場合もある。テストスクリプトの作成はQAEがやる
Q:
SWEは単体テストするのか? 開発者テスト実施を前提としてQAEはテストを実施?
A:
単体テストはSWEがやる。QAEは統合テスト(単体テストの次のレベル)かE2Eであり、ユースケースベーステストを対象としている
Q:
People Managerは人のマネジメントのみとのことだが、エンジニアからPeople Managerになるのか?やりたがらない人とかはいないのか?
A:
エンジニアからPeople Managerになるが、やりたがらない人はいる。現実的にはPeople Managerにならないとえらくなれない
QAEに期待される役割
  • QAアーキテクチャ、パイプラインの設計、構築
    • テストレベル、プロセス設計、構築
    • CI/CD
  • テスト計画、設計、実装、実行
  • バグ報告、デバッグ、分析
  • 品質ボトルネックの特定と改善の推進
  • リリース成果物の品質保証
  • テスト自動化の推進
Q:
QAEがCI/CDで求められることは何か?
A:
CI/CDのコードコミットからデプロイまでのいくつかのゲートに対して、テストをどう配置するのか、パイプラインの中身を決める。非機能要求のメトリクスの確認と改善について関わることもある
Q:
チームの中にQAEが一人だと、病欠などアクシデントがあった際はどうバックアップしているのか?
A:
基本的にドキュメント化し、自分にしかできないタスクを増やさない。他の人に任せられるようにする
Q:
非機能テスト(ex. パフォーマンス、ユーザビリティ、セキュリティ、・・)は誰が実施しているのか?
A:
QAEとSWE が主導してやっている。ただし、セキュリティ・ユーザビリティ・アクセシビリティ・法規制は専門組織を活用している
Q:
(アーキテクチャをすり合わせしないでこの質問をするのは難しいが)自動化100%とは、アーキテクチャ的にはどのゾーンを100%にするイメージになるのか?
A:
単体テストもE2Eテストも自動化できるならする (※建前を含む言い方であることは認めつつ)
Q:
アジャイル開発の各スプリント中でどのようなスケジュール感でテストの自動化を進めているのか?また、自動テストのメンテナンスにはどれくらいの時間がかかるのか?
A:
プロジェクトによる。ただ、メンテナンスは大変である
Q:
テスト自動化の中には性能、負荷、セキュリティ、AIの認識精度などの非機能面のテストも含まれているのか?またそれもQAEが推進するのか?
A:
含まれている。QAEは音声認識のAIに対してよく使う言葉の確認はするが、認識精度は別の専門のチームに任せる
QAEのラダー:評価軸の例

評価軸は日本と異なるのではないかと語った。

  • 曖昧さ、不明瞭、不確実へ対応する力
    • 曖昧な仕様、不明瞭な方向性、不確実なスケジュール
  • 自律性
    • 同僚、上司のサポートがどの程度必要か
  • 影響を与える範囲
    • チーム内、複数のチーム、複数のプロジェクト
  • 知識・技術力
    • 難しい問題の解決、適切な判断
仕事の進め方
  • 自律した組織間の集合体として全体最適化を目指す
    • ビジョン、カルチャーの浸透が重要視されている
  • 開発スタイルはアジャイル前提
  • ドキュメントでコミュニケーションする
    • 効果的・効率的な非同期コミュニケーションを目指す
  • スケールするかどうかを気にする
    • 変更に追従可能か、ボトルネックはないか
    • テストデータとステップの分離など
  • 依存関係を特定し、リスク軽減する
    • 依存部分はシミュレータに置き換えてE2Eシナリオテストを実施
  • 長期的には自動化100%をゴール
    • 短期的にもマニュアルテスト担当を入れる判断はせず、自動化を推進する
    • 安易に人を増やすと、自分達の自動化をしなくなる
Q:
QAEはアジャイルチームメンバーの一員として働いているのか?例えば、スクラムのタイムボックスの中でE2Eテストのチケットを作成して、進捗の管理を一緒にしているのか
A:
アジャイルのプロセスは一緒。タスク管理は別ボードでやっていることが多い。スプリントの同期だけは併せている
Q:
スプリントは同期しつつ、QAEのボードは別で管理されている理由は何か?
A:
スプリントの成果物をQAEが確認しないケースがあるため
Q:
効果的・効率的な非同期コミュニケーションをするために、工夫されていることはあるか?
A:
知識のある人が見ればわかるよう、ドキュメントをちゃんと作る
Q:
人員の増員に言及されましたが、自社要員以外に外部ベンダーへの委託はあるか?ある場合はどれくらいの比率になるのか?
A:
外部のテスト担当を入れることはあまりなく、嫌う傾向にある。社内にテストサービスの組織はある
Q:
非同期コミュニケーションだと、ドキュメントの背景がうまく伝わらない・勘違いが起こるが、どのような対策をしているのか?
A:
ドキュメントを説明するMTGをやる。15分読んで質問があったら受け付ける

これから目指すQAE像

最後に伝えたいこととして、以下について語った。

  • 日本のQAの技術力は大変優れている
  • 身に着けるべき重要なスキル
    • チーム全体で品質を確保する仕組みづくりを推進する力
      • QAアーキテクチャ、パイプラインを作る
    • 製品の理解&内部技術の理解
      • アーキテクチャの理解したうえで、テスト戦略を作れる
      • Biz& Devと会話できること
      • テスト技法で網羅するよりも優先順序をつけることが大事
    • テスト自動化専門家と一緒にOwnershipを持って調整するスキル
その他Q&A
Q:
アメリカは解雇されることがよくある、というような話を聞いたことがあるが、人の入れ替わりは日本と比べて激しいのか?
A:
エンジニアの求人競争は激しく、エンジニアの入れ替わりが激しい。解雇されるケースは少ない
Q:
(日本と比較するとアメリカでは転職が多い印象があるのですが)退職者/担当変更が発生することを前提として、会社/チームで何か対策はしているか?
A:
特別何かをやっているわけではない。2週間前に退職申告するのでいつの間にかいなくなっていることがある。普段からドキュメントを残す。引き継ぎ期間に口頭で話すなどしている
Q:
1週間のスケジュールではmtgが少なくみえたが、要件定義共有とか仕様共有(レビューのフィードバック)なども非同期で行っているのか?
A:
7割くらい関係ないスケジュールが入るが出席しない。要件定義共有とかは、アンオフィシャルなコミュニケーションでやっている
Q:
転職された頃の英語力はどれくらいだったか?
A:
日本のAmazonからアメリカAmazonに来たが、英語で面接して通るレベルである。QAEの仕事で使うのは限られているので問題ないが、フリートークのほうで苦労する
筆者感想

植月氏は本講演のトピックを事前にSNS上でやり取りをされていたことや、当日の質問の多さから日本との違いについて興味の高さを感じる講演だった。

QAE1名で期待される役割すべてをこなすことは難しいと話されたとおり、厳しい制約の中でどこにフォーカスするのか考えられていることがひしひしと伝わってきた。そのような環境でQAアーキテクチャやパイプライン設計を含めたすべての活動はとても洗練されたものとなるだろう。そのためか無駄なテストは省き、自動化100%の対象は単体テストもE2Eも目指すとの刺激的な発言もあった。

今回いただいた刺激をもとに、同じQAとして担当領域を広げると共に、洗練された活動を目指していきたい。

ワークショップ
「【初心者向け】テストを導くためのテストアーキテクチャの組み立て方」
 井芹 洋輝氏(ASTER)

テストアーキテクチャの概要

テストアーキテクティングへの工夫が年々求められるようになり、その背景は2点ある。1点目は、DevOpsでデプロイメントパイプラインを洗練させる例をあげ、様々なフェーズでのテスト活動を高度に連携させ、開発全体で優れた価値創造やアジリティを実現する開発スタイルが求められているためと説明。2点目は、イテレーションごとのテストの断片に対して、全体の品質保証として整合性を確保し、プロダクト品質を継続的に担保することが求められるためである。そのような状況においてプロジェクト全体のテストアーキテクチャに求められる役割は次のものがあげられる。テストが妥当であることがわかり、個々のテスト活動のみでは対応できない困難な問題や流動的な要求への対応ができ、メンバーが自律的に関与できることである。

テストアーキテクチャに対する要求はステークホルダーやプロジェクトフェーズ・テスト活動のフィードバックをうけて刻々と変化する。そのような状況に対応できるように、テストアーキテクチャの観点として構成要素・構造・環境・連携の4つに注目し、アーキテクティングの進め方として大きく分けて要求の分析・設計・評価と改善について語った。
最後にワークを通して、GSN(責務構造ツリー)の記述とパイプラインモデルのシナリオ評価を行い、参加者の理解を深めた。

筆者感想

初心者に寄り添うように、とても丁寧な構成と沢山の言葉を尽くして、テストアーキテクチャについて説明いただいた。いくつかの用語の定義を理解することで、テストアーキテクチャの姿や、開発ライフサイクルへの関連など、筆者自身の理解の広がりを実感した。

本講演を通して、テストアーキテクチャがアジャイル開発や小さいプロジェクトにも有効なこと、テスト対象やテスト活動だけでなくテスト担当者の自律性やスキルアップにも触れていたことなど、役割の大きさを感じた。また、高橋氏の講演ではリファクタリングの重要性が語られたことを踏まえ、テスト担当者としてテストを適切に育てる仕組みを作れていないことを感じた。

沢山の学びを得た結果として筆者自身何がわからないか、わからないという、ずいぶん遠い所まで来てしまった。まずは手を動かして一つ一つトピックを理解していきたい。チームとして品質をどうしていきたいのか、強く意識し、話しあえていなければよいテストアーキテクチャは構築できないと感じた。

終わりに

セッション5の各SIGとワークショップの発表者から、セッションで盛り上がった内容の報告が行われた。
最後に実行委員長の矢野氏より来年も頑張っていきたいと、プログラム終了の挨拶で締めくくった。

筆者感想(まとめ)

筆者はテスト担当者として、システム全体の品質やビルドパイプラインに携わりたいと考えていた矢先だったため、沢山のヒントをくれた今回の企画に感謝してもしきれない。

すべての講演のメッセージとして共通していたことは、テスト担当者として頭を使い、活動の幅を広げなければならないということだ。User, Biz, Devの要求を把握したうえで、製品全体の品質を把握し、テスト戦略・アーキテクチャを通して、パイプラインや自動テストを構築する。更に、短い期間での製品リリースに追従するために、活動の優劣を判断できなければならない。また、継続的な活動をするために、チームとして成長できる環境でなければならない。

考えることが多く、とても頭を使う時間だったが、最後はあっと言う間に終わってしまった。
月曜から頑張ろうという気持ちになった。

記:平田 将乙

[ページトップへ]