コードプロファイラ

コードプロファイリング機能を用いると、コードの実行コスト(処理時間やメモリ消費量)がわかります。パフォーマンスチューニングの際に、クリティカルパスを特定する場合やメモリのリークを特定する場合などに役立ちます。

 

単体テスト

単体テストは、クラスの関数とメソッドが仕様通りに正しく動作することを確認するテストを指します。結合テストはそれらのクラスをひとまとめにして仕様通りに正しく動作することを確認するテストを指します。

名称は単体テストですが、結合テストとして使用できます。実際には結合レベルのテストでの利用の方が多いでしょう。最近増えてきたテスト主導な開発では不可欠な要素です。

テスト主導な開発では単体テストを自動化しビルドするとき、常にテストを実行することでソースコードの品質を保証しつつ開発を進めていけます。単体テストを自動化するためには、単体テスト自身もプログラムとして作成しなければならず結構手間がかかるのですが、この単体テスト機能はかなり強力なスケルトンを自動生成してくれます(図3)。
 

スケルトンの自動生成
図3:スケルトンの自動生成
(画像をクリックすると別ウィンドウに拡大図を表示します)


コードカバレッジ

コードカバレッジはテストによってソースコードをどのぐらい網羅したかを表す指標です。C0(命令網羅)、C1(分岐網羅)、C2(条件網羅)といった基準があり、Team Systemのコードカバレッジ機能はC0基準になります。

テストを実行するとアセンブリ・ネームスペース・クラス・メソッドごとの網羅率がコードカバレッジの結果ウィンドウに表示されます。また、テストが通ったかどうかはコードエディタ上に色分けされて表示されます(図4)。
 

コードカバレッジの結果
図4:コードカバレッジの結果
(画像をクリックすると別ウィンドウに拡大図を表示します)


テストケース管理

VSTE for STは様々なテストを一元管理し、必要なテストを必要なときに実行できるよう複数のビューを持っています。テストの"結果"はテストリザルト(図5)にしか表示されませんが、テストコードへのジャンプはどのビューからでも可能です。自分が操作しやすいビューを使えばよいでしょう。
 

テストケース管理
図5:テストケース管理
(画像をクリックすると別ウィンドウに拡大図を表示します)

テストビュー(Test View)
テストビューはテストの編集をするためのナビゲーション機能を提供します。条件を指定して、テストをフィルタリングして表示させることもできます。またテストの定義ファイルへの移動や、テストの実行が可能です。
 
テストマネージャー(Test Manager)
テストマネージャーは個々のテストをカテゴリーに入れて管理できます。こちらも検索機能を備えています。
 
テストリザルト(Test Results)
テストリザルトはテストの実行に含まれるすべての状況を表示します。結果はPending(開始前の状態も含む)、Running、Passed、Failedと表示されます。負荷テストの実行が完了した時は、Completedと表示されます。

表1:テストケース管理の画面の説明

VSTE for STでは単体テスト以外にも以下のテストが可能です。
 

負荷テスト(ロードテスト)
複数のユーザの操作をシミュレートすることでアプリケーションに負荷をかけるテストができます。負荷テストのシナリオは、単体テストとWebテストの中から複数選ぶことが可能です。

またユーザの操作待ち時間やネットワーク帯域などの設定もできます。テスト結果は実施中の同時実行数・レスポンスタイム・スループットといったアプリケーションの性能値と、CPU負荷・メモリ使用量といったアプリケーションの状態値のレポートの形で得られます。
 
Webテスト
WebテストはWebブラウザでWebアプリケーションを実行した際のHTTP要求をレコーディングしておき、テスト実行時にWebブラウザの振りをしてHTTP要求を再現します。テスト成功の判断は「最後までHTTPエラーが発生しなかったかどうか」です。テキストボックスの入力やドロップダウンリストの選択といった操作がある場合は、データベース上のデータをもとに送信データを決定することができます。
 
手動テスト
テストの中には自動化することでかえってコストが高くなってしまうものもあります。その場合にはこの手動テストでシナリオを記述したドキュメントを作成して管理することができます。テスト担当者が手動で実行し、結果を入力します。一元管理を達成する意味で必要です。
 
汎用テスト
汎用テストは、指定したプログラムをテストとして実行する機能です。実行したプログラムの戻り値が0の場合には成功と判断し、それ以外の場合には失敗と判断されます。テストツールを独自に用意する必要がある場合に、このテストを使用します。

表2:VSTE for STで行えるテスト

これまで解説してきたように、開発に関する部分は以前に比べてさらに機能強化されています。テストに関する部分は今まで提供されていなかった領域であり、.NET開発における開発ライフサイクルへのインパクトが比較的大きいと思います。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30