読者です 読者をやめる 読者になる 読者になる

astah*で作成されたモデルをJavaのプログラムで解析・編集する

組み込みのモデリングツールとして一般的な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 クラシフィケーションツリー法は国内ではあまり知られていない手…

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

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

システムテスト自動化標準ガイドを翻訳

発売は年末となりますが、システムテスト自動化標準ガイド(原題Software Test Automation)という書籍を、有志の仲間で翻訳させていただきました。Amazon.co.jp: システムテスト自動化 標準ガイド (CodeZine BOOKS): Mark Fewster, Dorothy Graham, テスト自…

ソフトウェア品質シンポジウムにてConcolic TestingのSIGを開催

前ブログに続きますがソフトウェア品質シンポジウムにて、Concolic TestingのSIGのサブリーダーを担当させていただきました。 Concolic Testing用途紹介(回帰テストの場合) from H Iseri SIGでは色々と技術的な課題が指摘されましたが、研究会としてそれら…

ソフトウェア品質シンポジウム パネルディスカッションに登壇

先日、ソフトウェア品質シンポジウムにて、「レビューとテストは使い分けるべきか?」のパネルディスカッションにパネラーとして参加させていただきました。 http://www.juse.jp/sqip/symposium/detail/day2/#session_d4 ディスカッション中に用いた資料 SQi…

WACATE2014夏にてテスト設計のワークショップ実施

少し前の話になりますが、先日WACATE2014夏というソフトウェアテストの合宿勉強会にて、テストに関わるワークショップを担当させていただきました。ワークショップ解説資料プログラム概要 テーマは、テスト設計を対象とした、リバースエンジニアリング、追加…

CRESTの生成値が記録されない問題

CRESTは、デフォルトでは解析対象を実行する際に生成した値を出力しない。 生成値を出力する方法としては、公式サイトにて、run_crest本体のコードに細工する方法が以下で説明されている。 https://github.com/jburnim/crest/wiki/CREST-Frequently-Asked-Qu…

ロジックツリーでの上下の関係性の分類

少し前にTOCの勉強会が有りそこでロジックツリーを扱う機会があった。そこでも感じたことだけれど、ロジックツリーは汎用的な記法であるため、自由に書くと階層が何を表現するかこんがりがちになる。今回はその整理として、ロジックツリーで表現する上下の関…

Concolic Testingツール:CRESTによるテストケースの自動生成

ちょっと前に、C言語向けConcolic TestingツールであるCRESTを簡易的なサンプルで試したので、結果を簡単にまとめたいと思う。 なおCRESTを使用した雑感は以下の通り: コードから実行パターンを生成するのみ。テストオラクル問題をどうにかしないといけない…

AAAにてテスト自動化の品質特性について講演

先日、AAAというテスト自動化のイベントで、25分の短時間枠ですが、テスト自動化に関わる品質モデルや品質特性についてのセッションの機会を頂きました。http://www.slideshare.net/goyoki/ss-36405244イベントも大変エモい感じで、楽しい一日でした。 運営…

探索的テスト入門

だいぶ前に探索的テストの入門解説を行う機会があったのですが、最近その資料を公開しました。探索的テスト入門なお今年読んだExplore It!の内容を一部加筆しています。 一般的な割に意外と探索的テストの日本語資料は少ないようですが、何かしらの一助にな…

Classification Tree法について

※Classification Tree法のまとまった解説として「クラシフィケーションツリー法入門 - 千里霧中」を作成しました ソフトウェアテストの分野では、日本語圏と英語圏で話題や志向が違うことが結構ある。 その違いの代表例の一つに、テスト技法であるClassifica…

キーワード駆動テストの導入

最近キーワード駆動テストがややバズワード化している傾向を感じている。というのも、キーワード駆動テストの導入で無用な手間を増やしている場面を見るようになっているためだ。 キーワード駆動テストはフレームワークによっては手間を増やすことがあるので…

gauche.testを使う

Gaucheを扱う機会があったのだけれど、とりあえずGaucheでもTDDをやりたいということで、その標準の単体テストライブラリであるgauche.testに触れる。 gauche.test テストコードは以下の様なもの。ソートの関数my-quick-sortをテストする。 (use gauche.test…

問題形成チャートについて

少し前に佐藤允一さんの問題構造の書籍を読んでいたが、そこで説明される問題形成チャートが書籍で解説される問題構造をうまくまとめていて良かったので、今回紹介したい。なおこのチャートは結構昔に提唱されたものだけれど、REBOKに似た図が使われている等…

C++向けテストライブラリQuickCheck++について

Haskellで著名なテストライブラリにQuickCheckがあるが、C++ではそれに似た機能を実現するQuickCheck++というものが開発されている。今回はこのQuickCheck++について位置づけや例をまとめたい。 検査でのQuickCheckの位置づけ QuickCheckは、対象の実行領域…

@ITにてTDD/BDDの入門記事を執筆

少し前ですが、TDD/BDD入門連載の第一回を執筆させていただきました。http://www.atmarkit.co.jp/ait/articles/1403/05/news035.html入門連載の最初ということで基本的な内容が中心です。第二回以降や関連連載でも、テスト自動化研究会の仲間による応用的・…

C/C++でのユニットテストによるメモリリーク検出

CやC++の開発ではメモリリークに悩まされることが多い。メモリ管理はスマートポインタに限定するなど自分たちが注意しても、外部で開発されたコードやレガシーコードによって結局逃れられないことがしばしばある。 さらに組み込み開発といったコードの実行環…

Cadence SMVによるアルゴリズムの検査

先日、Cadence SMVによるモデル検査を扱う機会があった。アルゴリズムの検証で有用だと感じたので 復習がてら簡単に使ってみたい。 検査 今回は、並行コンピューティング技法で紹介されているスピンロックのバグの実装例をモデル検査で検証する。 その検査対…

Boost.Graphでの最短経路探索

先日、Boost.勉強会 #14 東京に参加させて頂いたが、そこでBoost.Graphの話があった。 復習がてら、今回はTDD Boot Camp 東京 for C++での最短経路探索の課題(TDD Boot Camp 東京 for C++ 課題)をBoost.Graphで解いてみる。なお課題は規模が大きいので、今回…

【情報共有】第8回組込みソフトウェア技術研究会向け資料

先日、組込みソフトウェア技術研究会というところで、組込みでのテスト自動化について紹介をさせていただきました・ 当日資料を下記に共有します。https://drive.google.com/folderview?id=0BwzSv7bTjDW9VEJhRS13dVhMeHM&usp=sharing

テストの品質モデルについて発表

先日、JaSST13'東海のポスターセッションにて、「テストの品質モデル構築の取り組み」と題した発表をさせて頂きました。 テストの品質モデル構築の取り組み from H Iseri 内容は、まず前提として、テスト環境・テストスクリプト・テストデータといった、テス…

データの品質モデル(ISO/IEC 25012)について

ソフトウェア品質モデルの国際的な標準規格としては、長らくISO/IEC 9126が一般的でした。ただ規格が置換されたこともあり、最近はISO/IEC 25000シリーズ(通称SQuaRE)が使われるようになっています。 ISO/IEC 25000シリーズでは、ISO/IEC 9126と比べていろ…

WACATE2013冬にてリスクベースドテストについて講演

先週末、WACATE2013冬というソフトウェアテストの合宿勉強会にて「リスクベースドテストを活用しよう」というセッションを担当させていただきました。 リスクベースドテストを活用しよう from H Iseri 内容はリスクベースドテストの概要や一連の進め方の解説…

Ultimate Agile Stories Iteration 3に寄稿

アジャイルの同人誌Ultimate Agile Storiesですが、前号に続いてIteration 3でも「アジャイルでのシステムテストはテスト戦略ありき」という記事を寄稿させていただきました。 http://ultimateagilestories.web.fc2.com/bookcontents3.html 今回は規模が大き…

CCCCについて

サイクロマティック数などソースコードのメトリクスは、レビューやリファクタリングのとっかかりとしてしばしば有用になるけれど、それらをシンプルかつ手軽に解析する手段の1つとして、前々からCCCC(C and C++ Code Counter)を使っている。最近身近なと…

ユニットテスト関連の入門記事執筆

年度末辺りからですが、「Developers AppKit Box」というサイトでユニットテストに関する記事を3つほど書かせて頂きました。ユニットテストの基礎_Developers AppKitBox | AppTest | Developers AppKitBoxテスト駆動開発の基礎_Developers AppKitBox | AppT…

ソフトウェアが止まったり落ちたりした状態をgdbで解析する

ソフトウェアがデッドロックや無限ループ等で応答しなくなったり、Segmentation Fault等で強制終了したりする場合での、gdbを使った解析手法について簡単なまとめ。 なお今回の内容はunixやlinux開発での基本知識となっていると思うけれど、例えば組み込みli…

gdbでのマルチスレッド処理のデバッグや制御について

マルチスレッド処理のデバッグや解析において、gdbで各スレッドの実行・停止を制御する操作についてメモ。 なお今回は解説で以下のサンプルコードを使用する。ここでは3つのスレッドがそれぞれ「m_count 」「t1_count 」「t2_count 」の3つの変数をインク…

実行中でのメモリ使用情報の取得

前回のエントリに続いて、今回は実行中に自分自身のメモリ使用情報を取得する方法についてメモ。 検証、プロファイリング、メモリ容量に合わせたアルゴリズムの選択処理などを行うために、実行中に自分自身が使用しているメモリサイズやそのピークサイズを取…

実行中でのコールスタックの取得と表示

メモ用。デバッグ等で有用なコールスタックはgdbなどの各種デバッガで取得できるけれど、実行中にアプリケーション内で取得したい場合がある。 それはglibcが使えるならbacktrace()、backtrace_symbols()で実現できる。 例えば下記のコード: #include <stdio.h> #inc</stdio.h>…

探索的テストの必要性

探索的テストがバグの大半を検出する 少し前にJaSST'13Tokyoに参加したのだけれど、そこでの基調講演で気になったのが、「システムテスト工程では、バグの半分は探索的テストのアプローチで検出される」という言及。その場で聞いたときは、手順のドキュメン…