このブログについて

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

2016年2月23日火曜日

C++testで、実行されたコードが見える!!


今回のテーマ:アプリケーションモニタリング

ソフトウェアの開発をしていて、コードの内容が分からない、ドキュメントが無いといった「レガシーコード」を読みたいと思ったことはないでしょうか。

レガシーコードの内容を把握するために、動作確認を繰り返すのは、とても大変な作業です。

今回は、レガシーコードの内容を把握する際に心強い味方になる、C++testの機能の1つ
「アプリケーションモニタリング」について、ご紹介させていただきたいと思います。

アプリケーションモニタリングとは?

実行時に様々なカバレッジを計測し、ソースコードを色分けして、実行・未実行を表示する機能に
なります。

特徴として、実機でもシミュレーターでも、ソフトウェアのカバレッジを取得することが可能です。

つまり、実機で動作させた後に、自分の目でカバレッジを確認することができます。

実行されたコードは緑、実行されなかったコードはピンクで表示されるため、一目で実行・未実行を
判別でき、デバッグ作業の大きな助けになります。

例えば、レガシーコードの中身を把握する必要がある場合に、レガシーコードを実行しながらカバレッジを取得することで、実際の動きとコードの流れを確認するというような使い方も可能です。


ロボットのカバレッジを取得してみました

アプリケーションモニタリングの例として、ETロボコンで使用したEV3のカバレッジを取得した例を
ご紹介いたします。

ETロボコンについては、こちらをご覧ください。

今回は、EV3とPCをBluetooth接続し、カバレッジをEV3からPCへ送信する方法でカバレッジの
取得を行いました。

EV3を実行すると、カバレッジの情報がPCに送信され、受け取ったカバレッジ情報をC++testで
確認することができます。EV3が自由に動き回っている状態のまま!!

以下は、左がEV3の写真、右がEclipse版C++testのスクリーンショットになります。
この例では、EV3の行カバレッジを取得しています。



取得可能なカバレッジの種類

C++testでは、C0、C1、C2、MC/DCを含む以下の8種類のカバレッジを計測することが可能です。

・行カバレッジ
・ブロックカバレッジ
・ステートメントカバレッジ(C0)
・パスカバレッジ
・判断文カバレッジ(C1)
・単純条件カバレッジ(C2)
・MC/DC
・関数カバレッジ

ぜひご活用ください!

C++testは、C/C++プログラムの単体テスト、カバレッジ計測、静的解析、フロー解析、実行時メモリエラー検出を行う総合的なツールです。

今回は、その機能の1つとしてアプリケーションモニタリングを紹介させていただきました。

C++testをご利用になっている方は、ぜひこの機能も利用してみてはいかがでしょうか。

もし、C++testをご利用いただいていない場合には、この機会にぜひお試しください。

無償体験版ダウンロードは↓こちら↓です。

 技術資料請求

テクマトリックスではツールのご提供のみにとどまらず、導入前の支援から、導入開始時における開発者向けのトレーニング、CI(継続的インテグレーション)環境構築など、運用に乗せるための様々なサービスも実施しています。

ご興味のある方は、お気軽にお問い合わせください。








2016年2月19日金曜日

【3/4開催セミナー】終らない結合テストにならないために注意する3つの事



近年の複雑化したシステム開発では、品質確保のためのテストの工程において様々な問題を抱えています。


  • 結合テスト段階になって多くの不具合が見つかり、大きな手戻りが起こる
  • 結合テスト時の不具合で、どの機能のコーディングに原因があるのかその特定に時間がかかっている
  • 不具合を修正するたびに繰り返される膨大なテストが開発現場の負担になっている

これらの問題は、最終的に追加コストの発生やシステムの大規模な改修につながります。
では、このような問題を解決するためにはどのような対処法が有効なのでしょうか?


例えば、昨今のシステムはWebアプリケーションやスマートフォンなどのUI部分とビジネスロジックを切り分けて、REST、SOAP、JMS、MQなどのAPIで繋いでいます。
このようなシステムのテストでは、事前にビジネスロジックの単機能に対して充分なテストを実施することで、結合テスト時に見つかる不具合の原因特定を容易にできます。


今回のセミナーでは、このほかにも結合テスト時に検出される不具合を未然に防ぐ方法のほか、複雑化するシステムの品質確保について近年の開発トレンドを含め詳しくご紹介します。



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆セミナー概要
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【開催日程】2016年 3月 4日(金)15:00~17:00 (開場:14:45)

【会場】テクマトリックス株式会社 セミナールーム
    東京都港区三田3-11-24 国際興業三田第2ビル 9F

【参加費用】無料

【定員】30名
  ※同業の方の参加はご遠慮いただいております。

【講演内容】
Webシステムのソフトウェアテストはこのままでいいのか!?
ソフトウェア開発手法のトレンドとテスト効率化・品質向上方法のご紹介
【講師】
テクマトリックス株式会社 ソフトウェアエンジニアリング技術部
酒井 利治

【概要】
複雑化する昨今のシステム開発では、多くの不具合が結合テストフェーズに持ち込まれ、対応に苦慮しているケースが少なくありません。
終らない結合テストにならないためにはどのような方法があるのか、近年のソフトウェア開発手法のトレンドの概説とともに、品質向上を達成する方法についてご紹介します。




━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆ お知らせ Jtest DTP 無料ハンズオンセミナー
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
本セミナーは、新しくなったJtest DTPとParasoft DTPを使用して、効率的なテストと品質向上に向けた運用法について、短時間でご理解いただける内容となっております。
奮ってご参加ください。




━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆ 関連製品
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
○開発テスト管理プラットフォーム「Parasoft DTP」
ソフトウェア開発現場における様々な情報を収集し、一元管理を実現する新しい概念のプラットフォームです。 Parasoft DTP に集約された情報からリスクをいち早く分析し、迅速な意思決定と開発現場へのフィードバックを実現します。



○アーキテクチャを刷新した最新のJavaテストツール「Jtest DTP」
従来のJtestをベースにCI(継続的インテグレーション)との親和性を高め、モバイル開発やセキュリティ対策に対応した解析エンジンの強化、解析パフォーマンスの大幅な向上、Java 8への対応など様々な機能を拡張した最新のJavaテストツールです。




○APIテスト自動化ツール「SOAtest」
Parasoftの「SOAtest」は、API(主にWebAPIやSOAP、MQ、JMS等のWebサービス)を提供する側の開発において、機能テスト、回帰テスト、パフォーマンステストおよび負荷テストを自動化し、重要性が高まるAPIの品質確保と開発の効率化を両立させる「APIテスト自動化ツール」です。

「SOAtest」には、RESTやJSON、SOAPをはじめとしたテクノロジーやプロトコルに幅広く対応したテストドライバーが搭載されており、APIの品質確保におけるテスト自動化を強力にサポートします。


2016年2月17日水曜日

早めのセキュリティ対策


そのアプリケーション安全ですか?

どんなに優れたアプリケーションでも、知らず知らずのうちにセキュリティ問題を作りこんでしまうことがあります。自信をもって「大丈夫!」と言えますか?

データベースを使用したアプリケーションの場合、ユーザーが入力した値をSQL文に使用します。悪意のあるユーザーが入力データを細工した場合、意図しないSQL文が実行される可能性があります。ユーザーが入力した値を何もチェックせずそのまま使っていると
  • 個人情報の漏えい
  • 情報の改ざん
  • データベースの破壊
などの問題を許してしまうかもしれません。

セキュリティテストのタイミング

完成したアプリケーションを使用してセキュリティテストを実施することが多いのですが、このタイミングだと。。。
  • 原因がどこにあるのかを特定するのに時間がかかる
  • 時間がなくて、リリース前にすべて問題を解決できない
というようなことがあります。
それなら、不具合対策のためのコーディングチェックと同じように、セキュリティの問題も早めに対策をとったほうが、よりセキュリティを高めることができると思いませんか?

効果的なセキュリティ対策

日経SYSTEMS2016年1月号Jtest を利用したお客様のセキュリティ対策が紹介されています。この記事で紹介された 『脆弱性を作りこまない』 ための Jtestのコーディングルールについてご紹介します。
例えば、SQL文に入力データを埋め込んで文字列を組み立てるの対策には、「プリペアドステートメント」の利用が効果的です。次のイメージは、prepareStatement()を使用せず、createStatement()を使用しているコードに対して違反をレポートしています。


Jtest には、コーディングチェックやバグの可能性をチェックするルール以外にも、 SQLインジェクションコマンドインジェクションクロスサイトスクリプティング(XSS) などの脆弱性につながるコードがないかを発見したり、パスワードの取り扱いに問題がないか、例外メッセージのコンソール出力など機密データの取り扱いに問題がないをチェックすることができます。また、 OWASP(Open Web Application Security Project)や PCIデータセキュリティスタンダード(PCI DSS)に準拠したルールセットも搭載されています。
参考: Jtestのセキュリティ脆弱性検出の特長

Visual Studio を使用して、C#や VB.net でアプリケーションを開発している場合は、dotTEST をご利用ください。Jtestと同じようにコードに潜んだセキュリティ問題を見つけることができます。

セキュアコーディング

脆弱性を含んだ危険なコーディングをしないためには、セキュアコーディングを意識することが必要です。Jtestにも搭載されている CERT/CCが提供している『Java セキュアコーディングスタンダード』のルールセットを活用し、言語仕様や実行環境に潜む落とし穴を理解し、攻撃に強く、安全で信頼性の高いアプリケーションの開発に役立ててください。
Jtest および dotTEST をお試しいただける体験版をご用意しています。


セキュリティ対策の一環として Jtest / dotTEST をご活用ください!

2016年2月3日水曜日

【セミナーレポート】 2016年1月19日開催!IoTセミナー

1/19に開催されました高信頼性IoTシステム開発の実現に向けたモデルベース システムズエンジニアリングの活用とシステム間の連携検証」セミナーは多くの方にご参加頂き、ご好評のうちに無事開催終了いたしました。

遠方からもご足労いただき、誠にありがとうございました。


今回のセミナーでは、慶應義塾大学大学院システムデザイン・マネジメント研究科の西村教授をお招きし、高信頼性IoTシステムの事例として、同氏が取り組む自動運転システムを搭載する自動車を取り巻くSoS(System of Systems)アーキテクチャに関して、MBSE(モデルベース システムズエンジニアリング)の有効性とシステム間連携における検証の重要性について解説いただきました。

今回は特に自動車関連のソフトウェア開発に携われている方から多くのご参加いただき、白熱した質疑応答がおこなわれました。


質疑応答の様子

一方、テクマトリックスからは「高信頼性IoTシステム開発においてデファクトスタンダードとなるテスト戦略」と題し、セッションをおこないました。

今後、益々広がりをみせるIoT時代においては、各サブシステムをつなぐAPIが重要な要素となることが予想されます。

テクマトリックスのセッションでは、IIRA(インダストリ インターネット リファレンス アーキテクチャ)がリストとして挙げている10の関心事から、安全性、セキュリティ、レジリエンス、相互運用性、接続性の5つの関心事にフォーカスし、それぞれの項目におけるAPI連携の課題とその解決の糸口について、ご紹介させていただきました




本セミナーの内容にご興味のある方は、お気軽にお問い合わせください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆ 関連製品情報
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
○APIテスト自動化ツール「SOAtest」
Parasoftの「SOAtest」は、API(主にWebAPIやSOAP、MQ、JMS等のWebサービス)を提供する側の開発において、機能テスト、回帰テスト、パフォーマンステストおよび負荷テストを自動化し、重要性が高まるAPIの品質確保と開発の効率化を両立させる「APIテスト自動化ツール」です。

「SOAtest」には、RESTやJSON、SOAPをはじめとしたテクノロジーやプロトコルに幅広く対応したテストドライバーが搭載されており、APIの品質確保におけるテスト自動化を強力にサポートします。




○API仮想化プラットフォーム「Virtualize」
Parasoftの「Virtualize」は、APIを使用する側のモノやアプリケーションの開発で必要となる結合テストにおいて、APIの挙動を模倣する仮想化ツール(テストスタブ)を提供し、実際のAPIを必要とすることなく早い段階からのテストを実現します。

機能間の連携を伴うテストは、REST、SOAP、MQ 、JMSなどで公開する個々のAPIの開発が完成していることが前提となり、並行開発時においてはAPI開発の進捗が結合テストを要する他チームのテスト進捗のボトルネックになります。
また、複数チームや企業を跨る開発では、1つしかないテスト環境の利用待ちが発生したり、自由に他社システムと接続したテストができないなど、テストの実施には様々な制限がつきものですが、「Virtualize」は、結合テスト以降で必要となるこれらのAPIやデータベースを仮想化し、必要な時にいつでもテストを実施可能にするため、品質確保と開発の効率化を両立させ、ビジネスの早期展開に寄与します。