このブログについて

ソフトウェア開発におけるエラーの予防やプロジェクト管理、品質管理を支援するParasoft製品のTIPSなどを、国内総販売代理店テクマトリックスのサポートスタッフが紹介しています。

2015年6月9日火曜日

システムテストでのテスト漏れ対策


リリース後に見つかるバグ

皆さんは、アプリケーションのリリース後にバグが見つかってしまうという苦い経験をされたことはありませんか?

リリース後にバグが見つかると修正する手戻りが大きく、もし繰り返しバグが発生するようであれば会社の信用にもかかわります。

しっかりシステムテストを実施しているのに、バグが発生してしまうのはなぜでしょう?

決して誰も手抜きをしている訳ではないはずです。


テスト漏れはシステムテストの観点不足?

システムテストでは、そのアプリケーションを利用する際の観点が多く盛り込まれ、操作性や業務の運用に問題がないかを確認します。その一環として異常系のテストも実施されるため、ひと通りの機能がテストされたように思えます。

しかし、ここに『観点の不足よるテスト漏れ』が潜んでいます。

例えば、ユーザの操作と言う観点でみると、ある機能のテストはひとつのテストケースで十分に見えるかもしれません。しかし、ユーザの操作と実際のソースコードは必ずしも一致する訳ではありません。

特にエラー処理などは、プログラム言語に依存したコードが含まれるため、ユーザの操作と言う観点だけではテスト漏れが生じてしまうのです。

Jtest 『アプリケーションカバレッジ』 でテスト漏れを予防

そこで今回は、テストの観点を補う仕組みとして、Jtest の『アプリケーションカバレッジ』をご紹介します。

この『アプリケーションカバレッジ』を使用すると、いつもどおりのシステムテストを実行するだけでコードカバレッジの計測が行えます。

コードカバレッジを計測すると、客観的にテストの実施状況を捉えることができます。

そのためテスト実施者の思い込みや考慮不足が取り除かれ、テスト漏れの防止に繋がります。

『アプリケーションカバレッジ』の実行イメージ

1. アプリケーションの操作を行います。

通常のテストシナリオを実行

2. アプリケーションの操作で計測されたカバレッジを確認します。
①行カバレッジ
C0:行カバレッジ計測

②判断文カバレッジ
C1:判断文カバレッジ

『アプリケーションカバレッジ』のおすすめ理由

上記の通り、『アプリケーションカバレッジ』を利用すると、システムテストで実行されなかったコードが一目でわかります。そのため、不足しているテストケースの特定が容易になります。

不足しているテストケースを知ることで、不足しているテストの観点に気づくことができます。

テストの観点不足によるテスト漏れを防ぐには、関数レベルの単体テストが有効な手段ですが、開発スパンの短いプロジェクトなどでは、そこまでのテスト実施は難しい場合があるでしょう。

『アプリケーションカバレッジ』なら面倒な準備は不要です。

これまでのシステムテストと変わらない工数で、より効果的なシステムテストを実施できるようになります。

手軽に始められる Jtest『アプリケーションカバレッジ』、ぜひシステムテストに取り入れてみてはいかがでしょうか?

『アプリケーションカバレッジ』の詳細はこちらのページでご紹介しています。 この機会にぜひチェックしてみてください。

評価版のご案内

今回ご紹介した、『アプリケーションカバレッジ』にご興味がございましたら、ぜひ Jtest 評価版で機能をお試しください。

↓Jtest の評価版はこちらからダウンロードできます。↓



Jtest には『アプリケーションカバレッジ』以外にも特定のコーディングパターンをチェックする『コーディングスタンダード』や複数ファイルにまたがる実行パスをシミュレートする『バグ探偵』、単体テストケースの自動生成、実行など様々な機能がございます。
Jtest の機能については次のページでご紹介しています。



2015年5月13日水曜日

ESEC2015出展!

今年も5月13日より東京ビッグサイトで開催される、「組込みシステム開発技術展2015」に出展します!

展示会場では、機能安全規格IEC 61508や自動車向け機能安全規格ISO 26262のツール認証を取得したC/C++言語対応オールインワンテストツール「C++testを始め、C#/VB.NETアプリケーションを対象とした「dotTESTとその最新導入事例をご紹介!


また、今回新たにIoT、M2M、IVIなど外部システムと連携する組み込み開発において、接続先環境の開発を待たず、スピーディな開発を実現する開発インフラ「Virtualizeを出展します。
会場では、Virtualizeの仕組みを実感できる実機を使ったデモを実施!

さらに、医薬品医療機器等法の施行により注目されるIEC 62304に準拠したライフサイクルプロセスに対応するための医療機器ソフトウェアSLCP支援サービスもご紹介します!


他にも、アーキテクチャ分析ツール、ソースコード構造解析ツールなど、ソフトウェア品質を支える各種ツールならびにソリューションを一挙ご紹介します!


会場にお越しの際は、是非テクマトリックスブースにお立ち寄りください!

展示会場:東京ビッグサイト
会期:2015年5月13日(水)~5月15日(金)
ブースNo:[西 8-71]

http://www.techmatrix.co.jp/i/qu/esec2015/

2015年3月20日金曜日

2015年2月 「C++testユーザ様限定」 品質向上ステップアップ特別講座 レポート

C++test をご利用いただているユーザー様に
より効果的に製品をご利用いただけるよう
2/26に品質向上ステップアップ特別講座を開催しました。


◆今回のテーマは「静的解析ツールの運用」


実のところ、コーディングルールチェック機能やフロー解析機能など
搭載した静的解析ツールを導入すると、

  • 解析の度に検出される膨大なルール違反が検出される
  • 膨大なルール違反のレビューに大量の時間が必要となる
  • レビュー時間の割にコードの品質向上の効果が少ないと開発者から不満が挙がる
  • コード修正のリスクを考えると、ルール違反をほとんど直せず現状維持が続いてしまう

というような壁にぶつかってしまう方がいらっしゃいます。

開発の状況よっては、どんな静的解析ツールを利用しても、
この壁に運用を遮られてしまうことがあります。

この壁の前では、立ち尽くすことしかできないのでしょうか?


そんな困難と思える壁を切り崩すコツをお伝えしたのが本特別講座になります。

そのコツの一部をご紹介すると

  • 膨大なルール違反結果から、現場に適した静的解析ルールを選定するコツ
  • 選定したルールを開発者にしっかり守ってもらうための環境作りのコツ
  • ルール違反修正を通じて、各開発者が培った開発ノウハウを効率よく共有するコツ

になります。

さらに受講者の皆様には、以下の環境をご用意し、
紹介したコツの実現方法を体験していただきました。
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
ホストOS :Windows 7
IDE :Eclipse 4.2
コンパイラ :Cygwin gcc 4.5
CIツール :Jenkins
バージョン管理ツール :Subversion
テストツール :Parasoft C++test 9.5
テスト資産共有ツール :Parasoft TeamServer
独自ルール作成ツール :Parasoft RuleWizard
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

受講いただいたC++testユーザー様が抱えているツール運用の課題は様々ですが
それぞれの開発現場でより効果的に運用するために必要な気付きが得られたと
お話をいただいております。

中でも、「ルール違反修正を通じて、各開発者が培った開発ノウハウを効率よく共有するコツ」
を実現するためのRuleWizardに、改めて興味をいただいた方が多かったことが印象的でした。

<独自ルール作成ツール:Parasoft RuleWizard>



‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

今回の内容とは異なりますが、
C++testによる静的・単体テストの入門から実践までを体感できる
【無料ハンズオンセミナー】
を東京・大阪会場で開催中です!

C++testを触ってみたい!
テストツールの使い勝手はどうなの?という方、
ぜひご参加ください。

<お申し込み・開催日程はこちら>

2015年3月11日水曜日

【医療機器ソフトウェアセミナー開催!】 2015年 変化する医療機器ソフトウェア開発の今

2015年 変化する医療機器ソフトウェア開発の今 ~開発における規制と現状、および CSV 対策を考える~

2015年、大きな変化を迎える医療機器ソフトウェア開発において
どのような準備が必要なのでしょうか?


IEC 62304、IEC 62366、ISO 13485などの主要規格の改訂・追補作業が進み、新たにソフトウェア単体の製品規格として、IEC 82304が準備されています。
日本でも昨年、ついに薬事法に代わり医薬品医療機器等法(薬機法)が施行され、医療機器ソフトウェア開発を改めて見直す必要が出てきています。

本セミナーでは、昨年に引き続き ISO/TC215 JWG7国内主査 平井正明 様 をお招きし、こうした動きの先駆けであるFDAの動向と、医療機器ソフトウェアの規制と現状についてご講演いただきます。
テクマトリックスからは医療機器の製造において必須と言える CSV(コンピュータ化システムバリデーション)の概要と、今回提供を始める CSV支援キット についてご紹介いたします。

医療機器メーカー様、医療機器ソフトウェア開発に携わっている方、医療産業への参入を計画している方には、非常に有益、かつ実務的な情報が満載のセミナーです。ぜひご参加ください。


 セミナーへのお申し込みはこちら


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆セミナー概要
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【開催日程】2015年4月8日(水)13:30~17:00 (開場:13:10)

【会場】東京コンファレンスセンター品川東京都港区港南 1-9-36 アレア品川 4F 406

【参加費用】無料

【定員】80名(定員になり次第締め切らせていただきます。)
※同一部署からのご参加は、2名様までとさせていただきます。
※ご同業の方、医療機器製造に携わっていない方の参加は、ご遠慮いただいておりますので あらかじめご了承ください。


【講演内容①】
■医療機器ソフトウェアの規制と現状:2015年

【講師】
 ISO/TC215 JWG7国内主査
 平井 正明様

【概要】
いよいよ薬事法に代わり医薬品医療機器等法が施行されました。
一方、その医薬品医療機器等法に関係の深いIEC 62304、IEC 62366、ISO 13485等の国際規格は改訂・追補作業が進み、さらにソフトウェア単体の製品規格として、IEC 82304の準備が進められています。またこうした動向の先駆けとしてFDAの動きも含めた医療機器ソフトウェアの規制と現状について紹介します。


【講演内容②】
■医療機器ソフトウェアに関係するCSV(コンピュータ化システムバリデーション)とCSV支援キット

【講師】
 テクマトリックス株式会社
 システムエンジニアリング事業部
 取締役 上席執行役員 事業部長
 中島 裕生

 テクマトリックス株式会社
 システムエンジニアリング事業部
 ソフトウェアエンジニアリング技術部長
 西田 啓一

【概要】
米国・欧州への医療機器申請の場合、CSV(コンピュータ化システムバリデーション)が求められます。
テクマトリックス株式会社は、医療機器ソフトウェア開発ライフサイクルに利用される各種ツールを提供しています。こうしたツールはCSVでは通常GAMP 5におけるソフトウェアカテゴリ3~4に分類され、それに対応したCSVへの取り組みが求められます。
 
そこでユーザ様が効率よくCSV業務を進めていただくために、第1弾としてMicro Focus社の構成管理ツールAccuRevならびにParasoft社の静的解析・単体テストツールC++testに対応したCSV支援キットを準備いたしました。
ここでは、CSVの概要説明の後に、CSV支援キットについて内容説明をいたします。

 ※内容は、変更する場合がございます。あらかじめご了承ください。

 セミナーへのお申し込みはこちら

2015年2月28日土曜日

Maven+Jtest9.5+Jenkinsによる継続的インテグレーション

継続的インテグレーションとは

継続的インテグレ―ション(CI)をご存知でしょうか。継続的インテグレーションとはエクストリーム・プログラミングのプラクティスのひとつで、ビルドやインスペクションを継続的に実行していくことを意味します。 本日は、Maven、Jtest、Jenkinsの各特徴をご紹介しながら、継続的インテグレーションをより効果的に運用できるような情報をお届けします。

Maven

Mavenとは、ビルドツールの一種です。いつ、どこで、誰がビルドしても同じ成果物を生成できることを目的としたツールになっており、以下の特徴を有しています。
  • プロジェクトのディレクトリ構成が予め決まっている。
  • 依存ライブラリはMavenリポジトリから自動的にダウンロードされる。
  • 依存ライブラリを使用するタイミング(Maven用語ではフェーズ)を指定できる。
  • JUnitによる単体テストの実行が可能である。
  • 開発した成果物はMavenのリポジトリに公開可能である。
図1. EclipseのMavenプロジェクト
上記の特徴を持っているため、ソースコードを格納するディレクトリとMavenの設定ファイル(pom.xml)さえあれば、誰がどこでビルドしても失敗することはありません。 コンパイルや実行に必要な依存ライブラリは、Mavenが設定情報を元にインターネットから自動でダウンロードしてくれます。

また、Mavenには単体テストを実行できる枠組みも用意されています。JUnit単体テストケースをsrc/test/javaディレクトリに格納するだけで、Mavenがビルドの前に単体テストを自動実行します。デフォルトの動作では単体テストに失敗した場合ビルドは実行されません。これによりテストにパスしていない成果物の生成を防ぐことができます。ビルド時に意識することなく単体テストが実行されるため、回帰テストとしてもよく利用される機能です。

もちろん開発者はビルド時まで単体テストの実行を待つ必要はありません。mvn testコマンドを実行することで、単体テストを逐次実行することも可能です。

Jtest

Parasoft JtestはJavaアプリケーションに対するテストをサポートするためのツールです。大きく分けて静的解析機能と動的解析機能があり、今回は静的解析機能をご紹介します。 静的解析機能には以下の種類があります。
機能名概要
パターンマッチング特定の記述をしていることで発生するバグを検出する。
フロー解析(バグ探偵)処理の流れを静的に追い、結果的に発生するバグを特定する。
メトリクス計測ソースコードの保守性や複雑度を数値として計測する。
静的回帰ツールとしてはOSSのFindBugsやCheckStyleが有名ですが、Jtestのフロー解析を利用するとOSSではチェックしきれないファイルまたがりのバグを検出できます。
フロー解析(バグ探偵)で検出できるバグの一例をご紹介します。

図2. Jtestによるフロー解析(バグ探偵)の例

詳しくはOSSとの比較ページを参照ください。

Jtest Mavenプラグイン

JtestにはMavenプラグインが提供されており、MavenからJtestを呼びだすことができます。
図3. Jtest Maven プラグインの設定例(pom.xml)

通常、JtestはEclipseプロジェクトでなければ解析できませんが、Mavenプラグインを利用することによりEclipseプロジェクトではないMavenプロジェクトに対しても解析がかけられます。 MavenからJtestを実行するにはmvn parasoft:jtestのようにゴールに「parasoft:jtest」を指定します。

Jenkins

Jenkinsは言わずと知れた継続的インテグレーションツールです。以下の特徴を持っています。
  • 定期的なビルドを実行することが可能。
  • Mavenとの親和性が高い。
  • JUnitの結果やFindBugsの結果をJenkins上で参照することも可能。
  • GitやSubversion等のバージョン管理ツールと連携可能。
  • 成果物(jar/war/ear)の管理が可能。
Jenkinsの新規ビルドの作成画面では、「Mavenプロジェクトのビルド」が専用で用意されており、Mavenによるビルドを簡単に設定することが可能です。

図4. Jenkinsのビルド作成画面

ビルドの設定画面ではMavenの設定ファイルである、pom.xmlの場所と、ゴール(clean/compile/test/install等)を指定するだけです。

図5. Mavenのビルド方法指定

Maven+Jtest+Jenkinsの相乗効果

Maven、Jtest、Jenkinsの特徴を組み合わせることにより、様々な効果を得ることが可能になります。

開発環境に縛られない

IDEごとにばらばらだった静的解析の実行や単体テストの実行はMavenからの実行で統一されます。 これにより、EclipseやNetBeans、IntelliJなど開発者は自分にマッチしたIDEを自由に選択できます。 静的解析を実行するためにEclipseプロジェクトになおして、依存ライブラリを設定して・・・などという煩わしい作業は不要になります。依存ライブラリの解決はMavenに任せればよいのです。

ジョブの管理が容易

あらゆるタスクがMavenからの実行で可能になるため、Jenkins上のジョブは一つで済みます。いくつもジョブを作成してビルドパイプラインを作る必要はありません。
以下をひとつのジョブで実現可能になり、継続的なインテグレーションをより容易に実現できます。

  • ビルドの自動化
  • 静的解析(パターンマッチング+フロー解析+メトリクス)とレポート生成の自動化
  • 単体テストの自動化
  • 成果物のデプロイ自動化

図6. JenkinsからMavenのビルドを実行した際のログ

開発初期から結合レベルのバグを検出

OSSの代わりにJtestのフロー解析を適用することで、コーディング工程では検出が難しいバグを検出可能になり、より効果的なインテグレーションを実施することが可能になるでしょう。検出した違反はMaven+Jtestによって${Mavenプロジェクト}/target/site/parasoftの配下にレポートとして自動出力されます。

図7. Jenkinsによって実行されたJtestのレポート

意識することなく回帰テストを実行可能

単体テスト工程になり、Mavenのテスト格納ディレクトリに単体テストファイルが蓄積されていくと、開発者が意識することなくJenkinsとMavenによって単体テストが実行されます。単体テストの結果は${Mavenプロジェクト}/target/surefire-reports/TEST-プロジェクト名.xmlで保存されるため、テスト結果をそのままIDEにインポートすることも可能です。 加えて、単体テストケースを蓄積しておくことで、ソースコードを変更した際の回帰テストとしての役目も担ってくれます。

成果物に対するテストの状況を確認

いつビルドした成果物なのかをJenkins上で管理することもできます。ビルドされた際のテスト状況も合わせて確認することができるため、リリース可能な成果物なのかを一目で確認可能です。

図8. Jenkins上での成果物と単体テスト結果の確認

最後に

今回はJtest9.5をベースにした継続的インテグレーションをご紹介しました。
Jtestの後継製品であるDTP for Javaでは、Mavenから単体テストを実行し、カバレッジを採取することも可能になる予定です。さらに便利になってインテグレーションの効果を上げるDTP for Java のリリースをお楽しみに!

2015年1月21日水曜日

第2回:Webアプリのテスト自動化は、なぜ失敗するのか?

今回は、2つ目の課題の『画面数や、ブラウザのサポート数に比例して、テストシナリオの数や長さが大きくなる』の対策について紹介します。
前回のおさらいは、 『第1回:Webアプリのテスト自動化は、なぜ失敗するのか?』 を参照してください。

---------------------------------------------------------------------------------------------------------------
 ◆◇ 画面数や、ブラウザのサポート数に比例して、テストシナリオの数や長さが大きくなる ◇◆
---------------------------------------------------------------------------------------------------------------

◆ 課題
たとえば、下図のような業務処理A~Cの操作では共通する画面遷移があります。

共通する画面遷移:
「トップ画面」 ⇒ 「ログイン画面」 ⇒ 「メニュー①画面」 ⇒ 「メニュー②画面」

テストシナリオを作成した場合、業務ごとに共通する画面遷移のシナリオが作成されます。
このようなケースでは、共通する画面でのシナリオの修正に対し、業務ごとに同じ対応を行う必要があります。

また複数ブラウザのテストが必要となった時、各業務のテストシナリオ数×ブラウザ分のテストシナリオを作成することになり、テストシナリオの増加に比例しメンテナンスに掛かる時間も大きくなります。

◆ 原因
各業務の操作やアプリケーション全体の画面遷移を考慮したテスト設計を行わず、安易にテストシナリオを作り始めると冗長的なメンテナンス性の低いテストシナリオが出来上がります。
このようなテストシナリオを自動化してもメンテナンスの時間が大きくなるだけでなく、シナリオの修正ミスを引き起こす原因にもなります。


◆ 対策
テストツールでテストシナリオを作成する前に、シナリオ(画面遷移)を分析し、共通化できる箇所を検討します。

たとえば、下図のように共通の画面遷移のテストシナリオを1つにまとめることができます。
これにより共通の画面の修正は1度で済むため、メンテナンスに掛かる時間と修正範囲を最小限に抑えることが可能となります。














◆ SOAtestで課題を解決!
SOAtestは、WebアプリケーションおよびWebサービス(Web API)の機能テスト・回帰テストや負荷テストを行うためのテストツールです。SOAtestには、今回、紹介した対策がツールの機能として提供されており、課題を簡単に解決することができます。

※ 共通の画面を共有化し、テストシナリオを作成!
テストシナリオを作成する時に、他のテストシナリオを参照することができます。
参照元のテストシナリオ部分を修正することで、参照先の全てのテストシナリオに修正内容が反映されます。



※ テストシナリオ実行時に、複数ブラウザを選択可能!
テストシナリオを実行する際に、ブラウザを選択し、実行することができます。
ブラウザは、Internet ExplorerMozilla FirefoxGoogle Chromeに対応しています。
1つのテストシナリオを複数ブラウザで実行可能です。




次回予告
-----------------------
次回は、3つ目の課題である『テストシナリオがコード(Javaなど)で管理される場合、運用できる人が限定される』の対策について紹介します。


体験版ダウンロード
------------------------------------------
http://www.techmatrix.co.jp/quality/download/index.html#soatest







2015年1月13日火曜日

増加する REST API のテスト工数を70%削減したテスト方法

サービスの早期提供に欠かせない技術として、昨今 REST を利用した Web API の開発がますます増加しています。
タイムリーにサービス提供を行うためには、この Web API (RESTやJSONなど)の送受信が正しく行われているかを効率的にテストすることが重要です。

しかし、多くの企業が Web API の検証に自社で開発したテストプログラムを用いており頻繁に繰り返される API のエンハンスごとのテスト工数と保守コストが課題となっています。

 増加する REST API のテスト工数を70%削減したテスト方法とは・・・


Web API・アプリケーション機能テストツール「SOAtest」は“GUI による簡単な設定”で高いメンテナンス性を備えたテストの自動実行とテスト結果の自動検証が可能です。
あるお客様においては、OSSベースで実施していたテスト工数に比べ約70%もの工数削減を実現されました。

この機会にその事例をご確認いただき、製品をお試しください!




◆「SOAtest」 Web API・アプリケーション機能テストツール ◆
SOAtestは、Web API のテストの実行とテスト結果の検証を自動化し、テストの効率化を実現するとともに、繰り返し実行に耐える信頼性の高いテストを提供します。REST/JSON をはじめとした様々なプロトコルに対応し、GUIによる視覚的な設定が可能で、誰もがテストを実行することが可能になります。

また、バッチモードでの実行も可能で夜間自動実行やJenkinsなどのCI環境に組込んだ継続的なテストも実現できます。