責務構造ツリー

責務構造ツリー 責務構造ツリーは、活動の責務を分割するためのモデリングツールです。 QAアーキテクティングやテストアーキテクティングで、各QA活動、テスト活動の責務を分析し、詳細化するために使用します。 責務構造ツリーの概要 責務構造ツリーは、責…

QAアーキテクチャの事前検証

「QAアーキテクチャが本当に妥当なのか」は、大抵の場合、サービスやプロダクトリリース後の事後評価で判明します。例えば、以下のような指標の評価が、本当にQAアーキテクチャが妥当かの確認に有効になります。 ビジネスの成否。例えば、ビジネスのKPIの達…

デザインパターンの陳腐化

最近、というより昔からの定番ネタですが、GoFのデザインパターンは時代遅れで陳腐化したという話題をSNSで度々見ます。今回はそのパターンの陳腐化について書きます。 GoFのデザインパターンの陳腐化 GoFのデザインパターンの複数は今も価値があるものの、…

QAアーキテクチャの概要

QAアーキテクチャの定義 まずソフトウェア開発における「アーキテクチャ」は、対象の基本的な概念・構造・特性を、構成、設計判断、設計原則で表現したものを指します。 例えばシステムのアーキテクチャの場合ですと、ISO/IEC/IEEE 42010ではアーキテクチャ…

QAアーキテクティング手法:CEQAAM

【この記事は整備中です。逐次加筆・更新している段階です】 このエントリでは、QAアーキテクティングの一手法:CEQAAM(シーカーム。Cooperative and Evolutionary QA Architecting Method)を解説するものです。 CEQAAMは、QAアーキテクティングの原則、ア…

アジャイルテスティング問答

先日、「人類よ!これがアジャイルテスティングだ!QAテックリードが語るアジャイルQAの実践とは何か? - connpass」というイベントに登壇させていただきました。 インタビュー形式だったので講演資料などは特に残ってないのですが、内容の記録のため公開に…

アジャイルテスティングのイベントに登壇

Ultimate Agilist Tokyoの10年越しの縁で藤原大さんから声をかけていただき、会社にも許可をもらって以下のアジャイルテスティングのイベントに登壇することになりました。人類よ!これがアジャイルテスティングだ!QAテックリードが語るアジャイルQAの実践…

世の中のアジャイルテスティングの定義と原則

アジャイルテスティングの定義や原則には、いくつかのバリエーションが存在します(大きく「アジャイルの原則に適合したソフトウェアテスティング」or「アジャイルに適合したソフトウェアテスティング」の2つに分けられます)。今回は情報の整理のため、有力…

テスタビリティ(試験性)の拡張を実現する実装

前エントリ「テスタビリティ(試験性)を確保するための設計方針 - 千里霧中」の補足として、「テスタビリティ(試験性、Testability)を拡張可能にする」の実装について解説します。拡張を実現する手段の一つに接合部(Seam)があります。今回は実装例として、接…

テスタビリティ(試験性)を確保するための設計方針

テスタビリティ(試験性、テスト容易性)は「どれだけ容易にテストできるか」「どれだけテストを実現できるか」の度合いを示す品質特性です。 実践ソフトウェア・エンジニアリングの解説から引用すると、テスタビリティは次の特性から構成されます。 実行円滑…

Flutter Integration Testingでは、testパッケージではなくSDKのintegration_testパッケージを使う

現在、FlutterのIntegration Testでは、flutter_driverパッケージとtestパッケージの組み合わせではなく、SDKのintegration_testパッケージでテストコードを記述することが公式で推奨されています。An introduction to integration testing | Flutter Note: …

テストコードのデザインパターン:Robotパターン

テストコードのデザインパターンの一つに、Robotパターン(Testing Robotパターン、Robot Testingパターン)という汎用的なパターンがあります。Presentation: Testing Robots - Jake Wharton Robot Pattern Testing for XCUITest | by Rob Whitaker | Capital…

Flutterの自動テストをGithub Actionsで実行する

Flutterのユニットテスト、ウィジェットテスト、インテグレーションテスト(エミュレータを使ったテスト)をGithub Actionsで実行する方法についてです。 対象のディレクトリ構成 (rootディレクトリ) test ユニットテスト、ウィジェットテストのテストコード t…

アジャイルテストでの計画・管理のツール:Test MatrixとTest Mindmap

「ソフトウェアテストの小ネタ Advent Calendar 2020」の記事です。Agile Testing CondensedやMore Agile Testingでは、リリーステスト(システム全体を対象とするテストレベル)の計画のやり方として、「リリース全体を俯瞰する視点で作成する。計画の作成…

機械学習による決定木分析でクラシフィケーションツリーを洗練させる

機械学習の手法の一つである決定木分析を使うと、入出力データから、対象の内部ロジックをある程度推測できるようになります。これはデバッグやテストの洗練に活用できる余地があります。今回はその一例として、決定木分析の主要なアルゴリズムであるCART法…

設計向けとテスト設計向けの適切な仕様表現の差異(デシジョンテーブルを例として)

設計向けとテスト設計向けでは、適切な仕様表現について認識に差異が出ることがあります。題材として、以下の仕様をデシジョンテーブルで表現する場合を考えます: 題材とする仕様 組み込み機器の単軸制御モード機能が対象 この機能は次の3つの入力を持つ 省…

UTP2(UML Testing Profile 2)でテスト設計の成果物を一通り表現する

UMLのプロファイル(特定用途向けに、ステレオタイプ、タグ付き値、モデル要素の制約・関係性の拡張をくわえたもの)の中に、ソフトウェアテストのためのプロファイルUTP2(UML Testing Profile 2)があります。 UTP2は、テストでモデルベースドアプローチを実…

Prometheusでファイルサービスディスカバリを使って監視対象を動的に変える

監視対象が動的に増減するような状況においてPrometheusで監視を行う場合、サービスティスカバリ機能が便利です。今回はその例として、Prometheusのファイルサービスディスカバリで監視対象を動的に変更する方法についてまとめます。 動作環境の構築 まずdoc…

Github Actionsでテストや静的解析に失敗するプルリクエストをマージできないようにする

Github Actionsを活用するとGithub内でCIを完結できます。その活用例として、今回はプリリクエスト作成時にユニットテストと静的解析を実行し、それらが成功しないとプルリクエストのマージを拒絶する仕組みをGithub Actionsで作ります。 対象コード 対象ソ…

Nスイッチカバレッジ計測ツールを公開

状態遷移テストの補助用に、Nスイッチカバレッジを計測するツールnswitchcov_aを公開しました。https://github.com/hiro-iseri/nswitchcov_a ユーザマニュアル https://github.com/hiro-iseri/nswitchcov_a/blob/master/docs/userguide_jp.md 使い方の例 CUI…

GSNでテストタイプを分析する

テストの上流設計でのテストの全体像を分析する手段の一つに、テストタイプの抽出・整理があります。このテストタイプの分析の助けになるモデリングツールにGSN (Goal Structuring Notation)があります。GSNは、ゴール、戦略、証跡を主な構成要素として、ゴ…

組み込み開発での品質保証、テスト、CD/CIの未来についてのイベント開催

直前ですが、「Tomorrow’s Software Testing for Embedded Systems」というイベントを開催します。10月23日 Tomorrow’s Software Testing for Embedded Systems(東京都)電通大にしさんの同名の講演の再演になります。組み込み開発における品質保証、CI/CD、D…

TDDはゆるく実践しても大丈夫

最近、TDDのテストコードは捨てても良いかみたいな議論を見ました。 これに対する自分個人の経験上の意見ですが、TDDは雑多にテストコードを使い捨てても効果を出せると思います。 もちろん、TDDで保守性が高く価値あるテストを書いて、捨てずにCIや中長期的…

テスト観点とは

テスト設計で「テスト観点」という言葉がよく使われるのですが、意味が広く、議論の発散の要因になりがちと感じています。そこで、今回は「テスト観点」の用語について、前提の「観点」の用語とともに簡単に解説したいと思います(いろいろな定義付けがされ…

2軸4象限でフロントローディングの方針立てを整理する

テストクラスタでフロントローディングがよく話題になるようになっています。これに関して、作業や課題を2軸4象限で整理すると検討を整理できる場合があります。チームで課題を話し合うときの議論の整理といった、簡易的・アドホックな使い方限定のプチフレ…

Jenkinsfileを構造的に整理する

Jenkins PipelineのJenkinsfileでテスト並列実行を最適化する - 千里霧中 つながりの話です。Jenkinsfileでは、groovyの構文を活用してJenkins Pipelineの実装を整理できます。 処理をメソッドとして抜き出す まずJenkinsfileではメソッドやクラスを任意に定…

Jenkins PipelineのJenkinsfileでテスト並列実行を最適化する

Jenkinsのpipelineを使うと、Jenkinsfileとしてジョブの定義・連携をGroovyで柔軟に記述できるようになります。そこでは例えば「変数を用いてノードやステージを横断する連携を実装する」「いろいろな外部スクリプトを実行して最適な実行条件を分析する」と…

atestcovでオールペア法での冗長なテストケースを見つける

ソフトウェアテスト #2 Advent Calendar 2018 - Qiitaの12/15の記事になります。ATestCovの使い方の一例紹介です。組み合わせテストツールATestCovを公開 - 千里霧中atestcovを使って、テストケース削除時のnワイズカバレッジの変化を確認することで、nワイ…

ATestCovを使って、テストケースで網羅できていないパラメータ組み合わせを見つける

先日公開したATestCovの使い方の一例紹介です。組み合わせテストツールATestCovを公開 - 千里霧中ATestCovでは、実行時引数「--info」(-i)の付与で、テストケースで網羅できていないパラメータ組み合わせを検出できます。 実行例として、以下のファイルを入…

組み合わせテストツールATestCovを公開

組み合わせテスト設計の補助用に、nワイズカバレッジを計測する簡易的なツールATestCovをリリースしました。ATestCovユーザマニュアル リリースページツールの想定用途は、既存のテストケースの網羅度チェックや、組み合わせのばらつきの評価です。計測対象…