Research

ソフトウェアテスト / ソフトウェアQA(品質保証・品質管理)

イマドキのソフトウェアQAの考え方

イマドキの開発では、Web/クラウド系システムとエンタープライズシステム、組込みシステムの境界や、SoR(高信頼性・高安全性システム)システムとSoE(ユーザ体験とスピードを重視するシステム)の境界、アジャイル開発と伝統的な開発の境界が無くなってきています。また車載システムに代表されるように、ソフトウェア化が進んだ製造業では品質保証組織のあり方そのものを見直す必要があります。

この「イマドキのソフトウェアQAの考え方」というスライドは、ソフトウェアQAの持つべきマインドセット、ソフトウェアQA組織の立ち上げやQA戦略を2020年7月時点で整理しています。SEA-SIGSQA(ソフトウェア技術者協会 ソフトウェア品質保証分科会)で議論している「新しいソフトウェア品質保証のかたちを目指して」の中間成果物です。新しくソフトウェアQA組織を立ち上げる方や、率いることになった方にお読みいただければと思います。

この「イマドキのソフトウェアのQAやテストの考え方」というスライドは、ソフトウェアに限らず品質保証組織の問題点について論じ、QAの戦略立案とエンジニアリングアプローチ(QAアーキテクチャ・テストアーキテクチャ)について2018年6月時点で整理しています。上の資料よりも、技術的に詳しく書かれています。

QualiTrax ~ 車載など組込みシステムのQAの未来

特に車載システムを中心に、組込みシステムは激動の時代に突入しました。OTA(インターネットを通じたソフトウェアアップデート)が標準的になり、OSSや機械学習のコンポーネントを搭載することで、極めて短いサイクルでの高頻度リリースが必須となります。すなわちモデルベース開発に加えてCI/CD・DevOpsが常識となりモデルベースQAからのQAパイプラインを構築する世界が到来します。これは開発やエッジのプラットフォームの共通化・クラウド化が進んでいくことを踏まえて、急速にシフトすると思われます。そして地理的・組織的な非同期分散開発が必要になりますので、アジャイルQAの方法論を自組織だけでなく海外・国内の共同開発組織をまたいで確立しておかないとなりません。また製品コンフィグレーションが非常に多い場合はそれでもテストが間に合いませんので、シフトライト(カオスエンジニアリング)の技術を導入して運用中の機器で動的にテストを行いその結果をビッグデータとして機械学習を用いてリアルタイムに分析し、障害発生リスクの高いコンフィグレーションを推測し事故が発生する前に手を打つレジリエントなQAを行う必要があります。これらをスムーズに行うためには、スキルの高いQAエンジニアによるシフトレフトやフロントローディングと共に、QAパイプラインの情報に対して機械学習を行って開発組織の弱点を自動的に示唆する技術を導入しインテリジェントQAのサイクルを回し続けることで、技術的負債を最小限にする必要があります。

この「Tomorrow’s software testing for embedded systems ~明日にでも訪れてしまう組込みシステムのテストの姿~」というスライドは、ASTER-組込みCI研究会での議論の助けを借りながら、2019年10月時点でそれらを"QualiTrax"というQAフレームワークでまとめています。既に世界では、こうした概念をそれぞれ(部分的に)実現している製造業の組織がありますが、自組織における車載機器など組込みシステムのソフトウェアQAの(すぐ先の)未来の姿、アジャイルQA、モデルベースQA、QAパイプライン、レジリエンスのためのインテリジェントQAについてあらかじめ考えて、先行して手を打っておこうと考える方にお読みいただければと思います。

ソフトウェア開発におけるフロントローディング

高品質を標榜する開発組織や技術的負債を最小限に留めたい組織にとって、フロントローディングによる品質の作り込みは必須の技術です。この「ソフトウェア開発における品質の作り込み ~フロントローディングの基礎~」というスライドは、ASTER-Bugcierge(バグ分析研究会)での議論をベースに、ソフトウェア開発における不具合のパターン化や分析の進め方といったフロントローディングの技術について2019年9月時点で整理しています。ソフトウェア開発における不具合の未然防止を実践したい方にお読みいただければと思います。

テスト観点に基づくソフトウェアテスト開発方法論:VSTeP

ソフトウェアテストをアドホックに行う時代やCPM法(仕様書をコピペしてテストケースを増殖させるダメなテスト手法)でしのぐ時代はとうの昔に過ぎ去りました。また探索的テストだけで高い品質が保てるような甘い世界ではありません。そこで現在の技術潮流では、テスト観点や高位テスト条件などのモデリングを行うことでテスト設計を見通しよく、かつ自動化に対応しやすいように行う進め方が一般的です。また大規模なソフトウェア開発では多くのテストレベルやテストタイプを俯瞰的に把握するテストアーキテクチャ設計も必要になります。このように、まるでソフトウェア開発のようにソフトウェアテストを要求分析・アーキテクチャ設計・詳細設計・実装・実行と順序だって行っていくことで、質の高いソフトウェアテストを実践する方法論がVSTeP(Viewpoint-based Software Test engineering Process)であり、そのための表記法がNGT(Notation for Generic Testing)です。

この「テスト観点に基づくテスト開発方法論:VSTePの概要」というスライドは、2013年5月時点でNGT/VSTePの考え方や進め方を整理しています。また「テスト設計チュートリアル U-30版」は、必ずしもVSTeP特有ではありませんが、テスト観点に基づくテスト設計の考え方を初級者向けに分かりやすく解説しています。自組織のテストの進め方を見直し再構築することで、やりっぱなしのもったいないテストから脱したい方にお読みいただければと思います。

またこの「テスト設計チュートリアル Open版」は、2019年12月時点でテストアーキテクチャ設計について踏み込んで整理した資料になっています。資料中ではVSTePでなくても応用できるように書かれています。大規模なソフトウェアテストや流用ベースのソフトウェアテストをきちんと体系立てて自組織で取り組んでいきたい方にお読みいただければと思います。

機械学習システム(MLS)のための品質保証

機械学習システムの品質保証やテストは、伝統的なソフトウェアとは全く違う考え方で進めていかなくてはなりません。この「AIプロダクト品質保証ガイドライン」は、私を含めた産学のエキスパートが集ったQA4AIコンソーシアム(AIプロダクト品質保証コンソーシアム)で執筆したガイドラインです。自組織で機械学習のコンポーネントの品質保証に関わる方にお読みいただければと思います。

また、この「Object-based Metamorphic Testing through Image Structuring」は弊研究室学部4年生(当時)のAdrian Wildandyawanさんの研究のプレプリントです。機械学習によるOCRシステムに対するメタモルフィックテスティングについて、データの構造化を行うことで効率的に行う技法が書かれています。

サービスエンジニアリング

我々は、ゲストの感情に着目したサービスプロセスの設計や改善について研究しています。サービスプロセスをモデル化することによって、ゲストの感情を高めたり低めたりするパターンを記述・蓄積・再利用する枠組みを提案しています。またサービスプロセスで高めるべき(低めないようにすべき)ゲストの感情を分類・整理しています。

またシステムセーフティの方法論であるSTAMP/STPAやFRAMをサービスプロセスの設計に応用することで、質の高いサービスプロセスの設計を行う方法を提案しています。

共同研究のお誘い

弊研究室では、ソフトウェアのテストや品質にお困りの組織や、最新の技術で競争力を高めたい組織に、共同研究という枠組みでコンサルティングを行っています。NGT/VSTeP、フロントローディング、QualiTraxといった最新の技術や考え方を自組織に適用する、さらに新たな技術を共同開発する、アジャイル開発におけるテストやQAの進め方を確立する、ISO/IEC/IEEE 29119/33063シリーズやTMMi、TPIなどの既存の標準的技術の導入のお手伝いをする、自組織の伝統的なテストのやり方を改善する、レビューの改善をする、バグ分析の方法の改善をする、ソフトウェア品質保証の仕組みを抜本的に見直す、認証で闘えるような説明力の高いテストをする、ハードウェア主体の品質保証組織にソフトウェアQAの考え方や技術を導入し進化させたい、など多種多様なご希望にお応えします。標準的な共同研究費は、月に1度の会議をベースとして1年間に約4~500万円とお考え下さい。ただし御組織の状況や研究成果の開示範囲によって共同研究費は変動しますので、まずはお気軽にご相談下さい。初回のご相談(2時間程度)は無料です。ご興味の方は、メールにてご連絡をお願いいたします。