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ユーザマニュアル リリースページツールの想定用途は、既存のテストケースの網羅度チェックや、組み合わせのばらつきの評価です。計測対象…

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…