登壇は基本的に受け身のみで、お声がけいただいたら対応しています。ただそれでも、今年は6月にソフトウェアテスト徹底指南書を出版してからありがたいことに多数の登壇依頼をいただき、かなりの講演・登壇をすることになりました。自分は講演上手でないと自…
ソフトウェア設計で普遍的に重要な設計アプローチ:関心の分離(SoC)は、高凝集設計、疎結合設計両方を要求します。具体的に、高凝集設計の推進で、コンポーネントの責務が関心ごとに集中している設計を実現します。疎結合設計の推進で、コンポーネントに割…
セキュリティ脆弱性をついて不正な操作やアクセスを行うための異常コマンドなど、危険な入力データを汚染データと呼びます。例えばSQLインジェクションでの悪意あるSQLコマンドの入力が汚染データの一種です。そして汚染データの害を無効化する対策を汚染防…
SoCの原則とSLAP ソフトウェア設計の原則にSoCの原則とSLAP(単一抽象度レベルの原則)があります。これら原則は、アーキテクチャやコードの責務設計・構造設計の基本となります。以下それぞれ解説します。 SoCの原則 SoCは「Separation of Concerns(関心の…
2年前から、ソフトウェアテストをテーマにした「ソフトウェアテスト徹底指南書」を執筆していました。今月、その書籍が発売されます。 今回はその書籍の概要と、執筆活動記をまとめたいと思います。gihyo.jp ソフトウェアテスト徹底指南書 ソフトウェアテス…
優秀なQAエンジニアは、チームやプロジェクトに大きな影響力を与えることがあります。例えば、チームの品質保証能力をイネーブリングして、迅速で的確な品質保証を実現します。チームを顧客満足に向け方向づけして、チームの力をより効率的に顧客価値につな…
ベース選出カバレッジ(ベースチョイスカバレッジ、Base Choice Coverage、BCC)は、組み合わせテストのカバレッジの一種です。有用なカバレッジ基準ですが、執筆時点で日本語情報が少なかったため、情報をまとめます。 ベース選出カバレッジとは ベース選出…
ソフトウェアプロセス改善手法SaPIDでは、プロセス改善で目指すべきものとして「顧客・会社・現場三方よし」を提唱しています。これは次の改善を一緒に成立させるように志向するというものです。 顧客価値につながるプロダクトを提供して顧客満足を引き出す…
エンジニアリング活動で好きな言葉に三現主義があります。三現主義は「実際に現場で現物を観察し、現実を認識する」という問題認識についての考え方です。現場・現物・現実の三つの現から、三現主義と命名されています。 この三現主義はソフトウェアの品質管…
品質改善サイクルの著名なものの一つに、SDCAサイクルがあります。 SDCAサイクルは、改善手段として標準化を活用するための改善サイクルです。PDCAサイクルの応用例の一つです。次の4つのフェーズを繰り返して改善します。 Standardize(標準化)。プロセス…
自分はここ10年ほどテストエンジニア(SET含む)、QAエンジニアとして働いているのですが、そういった役割でも結構プログラミング機会があります。例えば次のようなものです: 統合テストやEnd to Endテストの自動テストの実装 組込み開発の治具の開発 中大…
コードの読みやすさ、保守しやすさの指標の一つに、コグニティブ複雑度(認知的複雑度、Cognitive Complexity)があります。計測手段が充実してきていることもあり、今回はこのコグニティブ複雑度の概要と、計測方法についてまとめます。 コグニティブ複雑度…
「品質保証(QA)とは。定義の三大流派と定義揺れの弊害 - 千里霧中」で触れたとおり、QAの定義は日本国内では曖昧化しています。それに伴って、QAエンジニアの定義も曖昧化している状態です。曖昧化しているポイントは主に以下の二点です。 「品質保証(QA…
品質特性は要求定義やテスト分析、品質評価など、様々な場面で使われる考え方です。この品質特性についてですが、同じ対象に適用する場合でも「全体に適用する場合」と「全体を構成する個々の要素に適用する場合」で様変わりすることがある点、注意が必要で…
登壇 講演に苦手意識・下手さを感じているため、登壇は一貫して受け身でお声がけ頂いた場合のみ対応しているのですが、それでも今年は様々な機会を頂きました。 その中で印象的だったイベントが2つあります。1つは開発生産性カンファレンスで、申込者数が4桁…
先日、@IT開発変革セミナーと、「井芹さんが語る!」という二つのイベントで、高品質と高スピードを両立させるソフトウェアQAアプローチについて講演する機会をいただきました。 speakerdeck.com運営者、参加者の方々、後者にお声がけいただいたt_wadaさん、…
QA/QCの活動で実施する品質のモニタリングは、継続的に・繰り返し行われるため、なるべく自動化し評価の手間を少なくするのが理想です。そのためには、最初期にモニタリング設計を行い、モニタリングの仕組みを構築することが重要です。 例えばテスト実行の…
ここ最近話題になることが多いプロパティベーステストはHaskellのQuickCheckを源流としています。そこで今回はHaskellでの実装を通して、実例ベーステストとプロパティベーステストのコードを例示します。 テスト対象 今回はテスト対象として一般的なFizzBuz…
先日、企業様にて「アジャイルを支えるテストアーキテクチャ設計」と題して、テストの抽象レベルの設計や、テストの戦略立てでアジャイルを支えるアプローチについて講演させていただきました。アジャイルを支えるテストアーキテクチャ設計/Test Architectin…
テスト容易性の確保にかかわる責務設計、リファクタリングのためのデザインパターンに、Humble Objectパターン(Humbleオブジェクトパターン、質素なオブジェクトパターン)があります。Humble Objectパターンは、ユニットテストのデザインパターン集であるx…
リファクタリングは、設計やコードを綺麗に保つという普遍的に求められる活動の一要素です。常識的な習慣として推進すべき活動です。 ただ、有効性の理解を得られないままリファクタリングを行って物議を醸す場面も存在します(例えばここのはてなブックマー…
一定以上の規模のプロジェクトでは、開発プロセス設計において、テックリードなど有識者による横断的なテクニカルレビューをどうするかが課題になります。 そこでは、次の課題への対応が求められます。 レビューのレバレッジ性の確保。少数のレビューアの影…
先日、開発生産性 Conference 2024のSpecial Sessionにて、「高品質と高スピードを両立させるテストアプローチ」と題して講演をさせていただきました。https://speakerdeck.com/goyoki/test-approach-that-improves-quality-and-agility-together speakerdec…
モデリングの対象が同一でも、何をどうモデリングするかには無数の選択肢があります。 そこであるべきモデルを方向づけするのが、次の目的と制約です。 目的:モデリングで達成を助けたいもの 制約:モデリングの自由度を制限するもの 目的について まず目的…
ソフトウェアプロダクトライン開発とは ソフトウェアプロダクトライン開発(SPLE:Software Product Line Engineering。ソフトウェア製品系列開発)は、複数の類似した製品群(プロダクトライン)の開発についての開発手法・テクニックです。プロダクトライ…
社外のコミュニティ活動として、2017年からテスト設計コンテストU-30クラスの創設とその審査員長を続けていたのですが、立候補あり今年度から大段さんに引き継ぐことになりました。良いタイミングなので、今回振り返りながら、自分の審査委員活動の総括をで…
リグレッションテストの方針の重要性 ソフトウェアに変更を加えた際に、意図せず変更とは関係のない所で故障が発生したり潜在的なバグが顕在化したりしたものは、リグレッション(和製英語でデグレードとも)と呼称されます。 リグレッションテストは、この…
最近、Software Design 2月号にて、シフトレフトテストの解説記事を執筆する機会をいただきました。Software Design 2024年2月号シフトテストレフトは、シフトレフトの一種で、「テスト対象を動かして動的にテストするタイミングをなるべく早く設けよう」と…
※品質保証のエンジニアである筆者が自省・戒めのために書いた記事になります 品質管理(Quality Control)、品質マネジメントは国内では製造業を中心に発展し、プロダクトの競争力向上に貢献してきました。 JTCと呼ばれる旧来からのメーカーでは、その実績・…
今年、書籍執筆の機会をいただいているのですが、執筆期間が短く、プライベート時間にかなりの間文字を書き続けています。(体が無理できなくなったのも合わさって)そこで気になったのが、自分の自宅のPC環境の使いづらさでした。 その流れで今年後半はPC環…