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

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

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

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

ISO/IEC/IEEE 42010での「観点」関連の用語の定義・用例

テストでは観点という言葉が時々使われています。ただ結構曖昧な用語なので、議論すると話が発散しがちな印象を持っています。 そこでは体系だった標準を土台にすると発散を軽減できる場合があるのですが、テストの観点を語る上で使えそうな標準として、ISO/…

FreeMindからテストケースを自動生成するテストツールFMPictをリリース

最近、FMPictというテスト設計自動化ツールを作りました。https://github.com/hiro-iseri/fmpictFMPictは、FreeMindのモデルからテストケースを生成するテスト設計自動化ツールです(PICTを制御して実現しています)。nワイズカバレッジ(n:1~3)を100%網羅す…

FreeMindを使ってテスト設計技法クラシフィケーションツリー法のツールを作る

ソフトウェアテストの小ネタ Advent Calendar 2017 - Qiitaの7日目の記事です。テスト業務でFreeMindを使っている現場をちらほら見ます。このFreeMindについてですが、中身はテキストベースのXMLフォーマットなので、容易に読み出しや変更を行えます。XMLパ…

テスト設計コンテスト出場募集中&宣伝

去年からU30テスト設計コンテストというコンテストイベントで、審査委員長をやらせて頂いています。今コンテストへの出場応募中ということで、今回その宣伝をしたいと思います。 テスト設計コンテストとは テスト設計コンテストは、ASTERが開催しているテス…

「テスト戦略」を解説している書籍まとめ

最近自分の周りで「テスト戦略とは何か」という議論をちらほら見ます。それを見ていて、世の中のテスト本ではどのような定義で「テスト戦略」の言葉を使っているか気になりました。 そこで今回、テスト戦略について解説のある書籍を、概要とともにリストアッ…

優先度上限プロトコルによる優先度逆転の回避・リソース共有効率化

並行処理での優先度逆転の回避や効率性改善の実現手段として、優先度上限プロトコルがあります。優先度上限プロトコルは、リソースをロックしたプロセスの優先度を上限値に引き上げる仕組みです。 今回はTOPPERS/ASP3での実装を例に、簡単な解説を書きたいと…

POSIXスレッドにて複数スレッドのタイミング制御をまとめて行う(セマフォと条件変数を使う場合)

POSIXスレッドを使用する場合で、複数のスレッドを一斉にブロック解除させる方法についてまとめます。 今回は、割と課題になりがちな、スレッドの開始制御について扱います。POSIXでは、この開始時におけるタイミング同期の一斉制御は少し面倒になります。pt…

pythonのdoctestとcoverageでコメントの説明の十分性を簡易確認

pythonでは、ドキュメントとして書かれたコメントと、実際の動作が一致するか確認する手段として、doctestを標準で提供しています。 題材として、大まかな動作の説明をdocstringに書いた、以下のhoge()という簡単なメソッドを扱います。 # coding:utf-8 # sa…

astah*で作成されたモデルをJava APIで解析・編集する

組み込みのモデリングツールとして一般的なEnterprise Architectのファイルは、zipファイルとして解凍すると、テキストベースのXMLとして、モデルデータの各種解析や編集が可能になるのが一部で知られています。 一方で同じく組み込み一般的なAstah*の方は、…

(C++)constexpr & static_assertによるコンパイル時テストの用途

これは ソフトウェアテスト Advent Calendar 2016 - Qiita の4日目の記事です。 C++では、C++11から以下の言語仕様が追加されました。 ・違反するとコンパイルを失敗させる表明構文:static_assert ・指定対象をコンパイル時に処理させる指定子:constexpr …

ツリーで分析するときはクラスベースでも考えよう

以下でツリーモデルで物事を分析する難しさが少し触れられていたので、ツリーモデルの記法上の制約について書きたい(一応の前置きとして、今回書くのは主に記法上の制約のみで、ツリーによる分析の進め方にはあまり言及しない)。http://togetter.com/li/1047…

組み込みUMLでの、分析モデリングでのクラスの識別アプローチについて文献まとめ

組み込み向けのUML解説本で、概念モデルのクラスの識別をどのように行っているか、今回まとめた。 まとめた本は以下の本+α。組み込みUMLの技術書5冊と、組み込みではないが、クラス識別に関する名著(オブジェクトデザイン、実践UML、ユースケース駆動開発…

契約プログラミングでのオーバーライドの実現(D、C++、C#の実装比較)

オブジェクト指向の定番の入門書OOSCでは、オブジェクト指向と契約プログラミングの間に密接な関連付けを行っている。例えば継承によってメソッドをオーバーライドする場合では、Assertion Redeclaration ruleとして以下を示している。 事前条件は、継承元と…

Stateflowでの状態遷移モデルの動的シミュレーション

ソフトウェアのモデル駆動開発ツールの一つに、Stateflowがある。Stateflowは、MATLAB/Simulink上で状態遷移モデルと制御フローモデルを動かすための環境に該当する。 この環境、母体となるMATLAB/Simulinkが組み込み制御システムならあらかたシミュレートで…

憂鬱なExcel作業をPythonで紛らわす

自分の組み込み業界ではやたらExcelが多くて、Excelドキュメントのレビューの機会が度々ある。その中には、ファイル間のトレーサビリティ目視チェックといった、時に刺身タンポポと揶揄されるような気の滅入る作業も少なくない。 こういった作業は、周知の通…

RL78/G13 Stickでリアルタイムクロックを使ってLチカ

最近、RL78/G13 Stick評価ボード(*)を購入した手始めに、定番のLチカを行ったので手順をメモ。 環境構築 ソフトウェアの方は、ルネサスのサイトからCS+ for CA,CXをダウンロード・インストール。また評価ボードのマニュアルに従って、評価ボードのデバイスド…

TOPPERS/ASP3をシミュレータで動かす & タスクを実装する

最近公開されたTOPPERS/ASP3については、Mac OS Xでのシミュレーション環境がいち早く公開されている。今回はそのビルド・実行方法と、簡易的なタスクの実装方法についてまとめる。 シミュレータの実行 ダウンロード 以下から「Mac OS Xシミュレーション環境…

MacやLinuxでPICTを使う

組合せテストツールのPICTの解説で、表題についてよく聞かれるのでメモ。PICTについては、専用のバイナリファイルで配布されていたこともあり、今までWindowsで使用されてきた。 ただ去年からGithubでオープンソース化され、gccやclangで自由にビルドできる…

clang/gccに組み込まれたAddressSanitizer/LeakSanitizerでメモリエラーを捕捉する

C/C++でのユニットテストによるメモリリーク検出 - 千里霧中の補足。メモリエラーの検出方法についてだけれど、最近のclangやgccだと、AddressSanitizerという動的解析ツールが組み込まれており、それを活用できる。使用する場合はコンパイラオプション「-fs…

TPI NEXTファンデーション試験を受けた

TPI NEXTについて、日本語化を期に実践し始めているのと、現在TPI NEXT入門ワークショップを作っている背景から、最近、知識確認としてその資格試験であるファンデーション試験を受験した。 この試験、日本語で情報がほとんどなかったので今回参考までにまと…

「開発スピードと品質の両立実践法」登壇

先日、アイティメディア主催の「開発スピードと品質の両立実践法」というイベントにて、インタビュー形式の基調講演と、パネルディスカッションに登壇させていただきました。 https://itmedia.smartseminar.jp/public/seminar/view/723イベントのテーマは「…

VimでVerilogのコーディング環境を確保

VimにおけるVerilog開発環境については、ここ数年で色々なプラグインが標準サポートしてきた。 整理のために、今回はVerilog関連のプラグインの設定を少しまとめたいと思う。 スニペット 今年になって、neosnippetsがVerilogを標準サポートしている。 neosni…

PyAutoGUIでGUIの自動操作

PyAutoGUIがシンプルでかなり使いやすかったのでメモ。 PyAutoGUIは、GUIの自動操作をサポートするPython用ライブラリ。マウス操作、キーボード操作、スクリーンキャプチャ、指定した画像のマッチングと座標取得などの機能を提供する。シンプルだけれど、自…

MPLABシミュレータでのSCLによるソフトウェアの自動操作

MPLABでシミュレータを自動操作する手段にSCL(Stimulus Control Language)のスクリプトがある。 このスクリプトはIDEで設定して自動生成することが多いけれど、手書きで作成することも可能だ。スクリプトの記述力は十分とは言えないものの、ファイル操作・…

MacSpiceでのLPF回路のシミュレーション

Mac向けのSPICEとしてMacSpiceというものがあるが、これが結構良かったので使い方を簡単にまとめたい。 題材として今回はローパスフィルタ回路のシミュレーションをする。 題材 今回はローパスフィルタ回路として、単純なRC回路とRLC回路を対象に、周波数特…

Pythonを使った対数を含む単回帰分析

Pythonでのやや複雑な単回帰分析について。今回は書籍「データ指向のソフトウェア品質マネジメント」を題材にやってみる。Pythonでの記述は*を参考にした 分析データとしては、書籍での「テスト工程での不具合検出数の予測」にて提供されているCSVデータを…

クラシフィケーションツリー法入門

先日、WACATE2014冬というテストの合宿勉強会にて、テスト設計手法の一つであるクラシフィケーションツリー法を解説させていただきました。 クラシフィケーション・ツリー法入門 from H Iseri クラシフィケーションツリー法は国内ではあまり知られていない手…

レガシーコード改善勉強会にて登壇

少し前の話ですが、レガシーコード改善勉強会というイベントで登壇させていただきました。 内容としては、自分の組み込みと少し離れた場ということもあり、普遍的なレガシーコードとの扱い方について話させて頂きました。 レガシーコードとの付き合い方とテ…