社外のコミュニティ活動として、2017年からテスト設計コンテストU-30クラスの創設とその審査員長を続けていたのですが、立候補あり今年度から大段さんに引き継ぐことになりました。良いタイミングなので、今回振り返りながら、自分の審査委員活動の総括をで…
リグレッションテストの方針の重要性 ソフトウェアに変更を加えた際に、意図せず変更とは関係のない所で故障が発生したり潜在的なバグが顕在化したりしたものは、リグレッション(和製英語でデグレードとも)と呼称されます。 リグレッションテストは、この…
最近、Software Design 2月号にて、シフトレフトテストの解説記事を執筆する機会をいただきました。Software Design 2024年2月号シフトテストレフトは、シフトレフトの一種で、「テスト対象を動かして動的にテストするタイミングをなるべく早く設けよう」と…
※品質保証のエンジニアである筆者が自省・戒めのために書いた記事になります 品質管理(Quality Control)、品質マネジメントは国内では製造業を中心に発展し、プロダクトの競争力向上に貢献してきました。 JTCと呼ばれる旧来からのメーカーでは、その実績・…
今年、書籍執筆の機会をいただいているのですが、執筆期間が短く、プライベート時間にかなりの間文字を書き続けています。(体が無理できなくなったのも合わさって)そこで気になったのが、自分の自宅のPC環境の使いづらさでした。 その流れで今年後半はPC環…
「実践プロパティベーステスト」の発売をきっかけに、国内でプロパティベーステストの話題がホットになっています。 今回はこのプロパティベーステストの概要とテクニックについて、Pythonをサンプルに解説します。 プロパティベーステストとは プロパティベ…
組み合わせテストは、「組み合わせ爆発」という言葉がある通り、テストケースの規模が大きくなりがちです。それに付随して、開発のスピードやコスト、必要リソースに悪影響を及ぼすこともあります。 そのため、組み合わせテストの組み合わせ削減は、テストケ…
ユニットテストのコードカバレッジ(テストカバレッジ。ステートメントカバレッジやC0、C1など)は、不適切な運用が根強く見られます。多いのが、コードカバレッジの確保だけをテストの十分性目標にして、まずいテストを書いてしまうパターンです。 今回はこ…
大規模な開発では、抽象レベルの高いテスト設計(いわゆるテストアーキテクチャ設計が代表例)を通して、大規模なテストを中小規模のテスト要素に分割するアプローチがとられます。 例えば次ようなものです: システムオブシステムズのレベルで、各企業組織…
最近の開発では、CI/CD、自動テスト、継続的テストが当たり前となっていますが、その影響で、それらのCI/CD方針、テスト方針と、Git等のバージョン管理のブランチ方針をどう連携させるかが、定番の課題になっていると感じています。 今回は、このブランチ方…
近年のソフトウェア業界では、テスト関連活動を担うエンジニアを「QAエンジニア」と呼ぶようになっています。ただQA(品質保証)という言葉は、旧来から二つの定義が共存しているほか、業界内の通例で更に別の意味付けが行われた結果、定義が曖昧になり誤解…
先日、テスト設計コンテストU-30クラスに関連するイベントとして、テスト設計のチュートリアル講師の機会を頂きました。https://speakerdeck.com/goyoki/test-design-tutorial今回のチュートリアルでは、初学者向けに、勉強会やセミナーで解説されるテスト分…
プロジェクト全体のテストを組み立てる際に重要な課題になるのが、テストレベル設計です。テストレベル設計は、ユニットテスト、結合テスト、システムテストといったテストレベルを、どのような責務・段取りで行うか分析・設計する活動です。 このテストレベ…
カオスエンジニアリングや継続的ベリフィケーションの解説で目にすることのあるテストプラクティスに、スクイーズテスト(Squeeze Test、圧迫テスト)があります。ただこのスクイーズテストはカオスエンジニアリングの一例として名こそ取り上げられているも…
先日、JaSST'23 Tokaiというテストのイベントで「自動テストを活躍させるための基礎作りとテスト設計の工夫」と題して講演する機会を頂きました。https://speakerdeck.com/goyoki/improvements-and-test-design-for-effective-test-automation今回はシンポジ…
SQuaRE、ISO/IEC 25010についてですが、標準規格の担当WGの方が、2022年の3月のタイミングで審議中の改訂情報に触れていました。https://speakerdeck.com/washizaki/squareguan-lian-falsebiao-zhun-hua-falsequan-ti-dong-xiang-25010-25019gai-yao-ip-shan…
これまで色々な立場で、色々なテスト案件を経験してきましたが、その中で一番生産性が高いテストアプローチが、精鋭テストエンジニア達による探索的テストでした。 適切なタイミングで、必要な環境と必要な人材が揃った探索的テスト部隊がテストを始めると、…
先日、QuesというソフトウェアQAをテーマにした勉強会に「テスト自動化の成果をどう評価し、どう次につなげるか」と題して登壇させていただきました。docs.google.com「テスト自動化をした後」をテーマにしてほしいとの要望を頂いていたため、今回は以下の3…
「Calendar for ソフトウェアテストの小ネタ | Advent Calendar 2022 - Qiita」の記事です。C++のメジャーなテスティングフレームワークGoogleTestは、gccやclangに組み込まれたSanitizerと連動することで、不正なメモリ操作や不適切なスレッド間データ共有…
最近 Cap'n Proto の導入例を割と見るようになっています。Cap'n ProtoはRPCのフレームワークおよびフォーマット仕様のシステムで、gRPCに対抗して作られたものです。今回はCap'n Protoのスキーマ言語の定義と、その処理の簡単な例として、Serializationの最…
ファジングテスト、コンコリックテストなど、テスト入力を自動生成・大量使用するテストで問題になるのが、テストオラクル(テストの期待値を提供するもの)をどう実装するかです。このテストオラクル問題への対策の代表例については、次のようなアプローチ…
ミューテーションテストとは、テストの有効性を評価するための手法です。テスト対象を変更し(バグを埋め込み)、それによってテスト結果が変化するかを調べることで、テストがバグを見つけられるかを評価します。 ユニットテストなどホワイトボックステスト…
Goは標準のテストフレームワークでファジングをサポートしています。今回はそのファジング機能について、テスト条件の網羅をどうするかを中心に使い方をメモします。 基本的なテストコードの書き方 Fuzzingを使ったテストコードの簡単な例を以下に示します。…
C++20から導入されたコンセプト(concepts)は、テンプレート型のパラメータの制約を実現する、型制約の言語機能です。 コンセプトを使うと、従来のSFINAEなどのテクニックと比べて、簡潔に型の制約を記述できるようになるほか、制約違反時のエラーメッセー…
先日、JaSST’22東北にて、「テスト自動化の成功を支えるチームと仕組み」と題して招待講演を行う機会をいただきました。内容は、テスト自動化を支える活動や、テスト自動化の基礎作りについて、長年の経験で得た経験や知見を整理したものになります。docs.go…
構造やコードに対するテストカバレッジは、テスト対象のモデルが比較的明快であるため、表現が容易ですし、既に様々なカバレッジが世の中で使用されています。 例えばコードの場合、次のようなカバレッジでテストカバレッジを表現できます。 制御フローに対…
特定のテストレベル(例えばシステムテスト)で大規模で複雑なテストを設計する場合、目的や十分性基準、テスト設計方針を具体的に考えるために、関心事の分離を実施する必要があります。 その手段の一つとして、テストタイプの設計があります。そこでは巨大…
「Calendar for ソフトウェアテストの小ネ | Advent Calendar 2021 - Qiita」の記事です。今回は、ソフトウェアテストの英語技術文書のリーディング・ライティングを最低限できるようにするための、手っ取り早い付け焼き刃勉強法に触れます。 先の前置きとし…
「Calendar for ソフトウェアテスト | Advent Calendar 2021 - Qiita」の記事です。多言語をサポートするプロダクトの開発では、各言語ごとに表示文言が正しく描画されているかテストしたい場合があります。 今回は、その文言描画の多言語対応テストを、Tess…
先週、JaSST東海というイベントで「テストを導くためのテストアーキテクチャの組み立て方」と題して登壇させていただきました。テストを導くためのテストアーキテクチャの組み立て方/cetam - Speaker Deck内容は、システムテスト/結合テスト/ユニットテスト…