株式会社Codeer | 大阪
ローコード開発基盤CLB・ソフトウェア開発

// Test Automation

テスト自動化の導入をお手伝いします

テスト自動化は一般的には難易度の高いプラクティスです。しかし弊社の長年積み上げたノウハウがあれば、導入、運用時の無駄を省き低コストで高品質な自動テストを導入できます。

// Why

なぜ自動テストが必要か

手動テストの問題点

テストのコストは膨大です。リリース前のテストはもちろん、実装中にも開発者は細かく何度も確認しています。手動では繰り返すことができないので、確認後にコード修正が入るとテストの漏れが発生しがちです。緊急リリース時には、リスク込みでリリースせざるを得ない場合もあります。

守る:コスト、リスク削減

テストは資産となり蓄積されるので繰り返し実行できます。負荷分散にもつながります。また現状の品質を正確に把握できるので、リスクに対応することが可能になります。

攻める:ユーザー満足度向上

リスクを削減しているからこそ攻めることができます。リリース速度を向上させ、ユーザー満足度を向上させます。思い切ったリファクタリングが可能となり、改善の結果ますます開発速度が向上します。

手動テストのテストコストとリスクを通常開発時、リリース時、緊急リリース時で示した図。リリース時はコストが集中し、緊急リリース時はコストとリスクがともに高い
手動の場合:リリース時にコストが集中し、緊急時にはリスクも残ります。
機能の実装が進むごとに蓄積された自動テストが増え、リリース時や緊急リリース時も蓄積されたテストで対応できることを示した図
自動化した場合:蓄積されたテストで、通常開発からリリースまで支えます。

// Approach

Codeerの進め方

システムテストを自動化するにはアプリを外部からプログラムで操作する必要があります。これができるかどうかが、テスト自動化の成否を分けるといっても過言ではありません。

強力な操作

Windowsアプリ:Friendly

弊社開発のOSSライブラリです。対象はネイティブ、.NETのForm、WPFアプリケーションです。キーマウスのエミュレートに加え、対象プロセス内部のメソッドを外部から呼び出せるので、従来の手法では自動実行が難しかったテスト項目も自動化できます。Windowsアプリから操作可能な組み込み機器のテストにも利用されています。

Webアプリ:Selenium

Webアプリ自動操作のデファクトスタンダードです。弊社メンバーは特にC#を得意としているので、ASP.NETのプロジェクトではプロダクトと同じ言語でテストを実装できます。ブラウザで動作するJavaScriptも呼び出せるので、細やかな制御が可能です。

最適な設計

テスト設計

自動テストの設計は通常のテスト設計と少し異なります。手動の場合よりパラメータを多めに振ることができ、成否をプログラムが判断するのでそれに応じた期待値判定を考える必要があります。弊社には衛星通信の品質を保証できるほどのテスト設計のスペシャリストがいます。

テスト自動化プログラムの設計

アプリを外部から操作するという技術的な面と、テスト内容を分かりやすく記述するという面の二つがあります。テスト自動化を成功させるには、これを綺麗に分離しなければなりません。設計と実装は(株)Codeerの最も得意とするものです。

// Test Assistant Pro

TestAssistantPro

CodeとToolのシナジー効果。自動テストのコードの大部分をツールで作成する、Visual Studioの拡張です。

(株)Codeerは自動テストを作成する際にはC#とOSSのライブラリを使ってプログラムを作成します。様々なプロジェクトでテスト自動化コンサルティングをしてきた結果、それが最も高い効果を出せると考えています。

しかし、プログラム作成にはそれなりにコストが必要でした。そこで作られたのがTestAssistantProです。プログラムの完成度の高さはそのままに、コードの大部分をツールによって作成することで大幅なコスト削減に成功しました。またガイドラインに沿ってツールを利用することで、テスト自動化プログラムの学習コストも削減できます。

対象ライブラリ設計パターン
Webアプリ Selenium PageObjectパターン
Windowsアプリ
(Win32 / WinForms / WPF)
Friendly Driver/Scenarioパターン

特許7294609

Webアプリのテストを作る

画像を押すと、操作の様子を大きく表示します。

PageObject作成

Seleniumを使いPageObjectパターンに沿ったコードを生成します。生成後は普通のC#のコードと同じく編集できます。

画面を解析してPageObjectのコードを生成する操作

シナリオ作成

PageObjectを使ったコードをブラウザの操作から生成できます。変更後のコードを使って、続くシナリオコードを生成することもできます。

ブラウザの操作からシナリオのコードを生成する操作

機能追加

柔軟にカスタマイズでき、任意のコードをキャプチャ中に追加できます。この例では右クリックメニューから、現状を期待値としたAssertコードを追加しています。

右クリックメニューからAssertコードを追加する操作

Windowsアプリのテストを作る

Driver作成

Seleniumの代わりにFriendly、PageObjectパターンの代わりにDriver/Scenarioパターンを使ったコードを作成します。

Windowsアプリを解析してDriverのコードを生成する操作

シナリオ作成

シナリオも対象アプリの操作から生成できます。

Windowsアプリの操作からシナリオのコードを生成する操作

特殊なコントロールにも対応

サードパーティやプロジェクト固有のコントロールでも、コントロールドライバを作成すればテストシナリオをシンプルに保てます。対応するコードジェネレータを実装すれば、コード生成機能も使えます。

独自のコントロールの操作からコードを生成する操作

3rdパーティ製コントロール対応

3rdパーティ製のコントロールでもカスタマイズによって対応できます。必要に応じて拡張していきますので、ご要望がありましたらご連絡ください。

Infragistics様 WPFコンポーネント

テスト用ドライバがTestAssistantProに対応しています。

メシウス様(旧グレープシティ様) SPREAD

テスト用ドライバがTestAssistantProに対応しています。

効果を出すために

何より重要なのは、まず効果を出すことです。そのためには次のことが必須です。

  • 十分な量のテストケースが実装されている
  • 安定度が高く正確に動作する
  • チームの誰もが頻繁に実行することができる

「良い設計に沿ってコードを書く」ことを基本に、そのコードの大部分をツールで作成することでコストを抑えます。コストを抑えて早く実装できるからこそ、効果が出るレベルのテストケースの量を確保できるという好循環につながります。

価格

ライセンス 価格/年 内容
開発者ライセンス ¥198,0002年目以降 ¥138,000 1人の開発者が1台のPCで利用できます。
サイトライセンス ¥1,980,0002年目以降 ¥1,380,000 最大50人の開発者が利用できます。

詳細はTestAssistantProライセンス利用規約をご覧ください。有効期限確認時にネットワーク接続が必要となります。また、その際にライセンス情報、マシン固有の識別子、Visual Studioのバージョン、TestAssistantProのバージョンをサーバーに通知します。

// Case Study

事例紹介

株式会社エクス様の事例の画像

株式会社エクス様

主力製品の電脳工場の品質向上のため、テスト自動化を導入中です。

Next Designの画像

株式会社デンソークリエイト様

システム・ソフトウェア設計ツール Next Design のテスト自動化を作成されました。

テック情報株式会社様の事例の画像

テック情報株式会社様

さらなる品質向上のために、テスト自動化を導入されました。

導入実績(一部)

// How to Request

テスト自動化のご依頼方法

テスト自動化で成果を出すには経験が必要です。(株)Codeerは多くの案件で成果を出してきました。

トライアル

テスト自動化が上手くいくかは、対象プロダクトの性質にも大きく依存します。まずはテストの一部だけを自動化して、効果をご確認ください。

トレーニング

経験豊富なコンサルタントがハンズオン形式でトレーニングいたします。後半では、実際に対象プロダクトのテストを自動化する実践的なメニューも用意しています。

設計

自動テストにはそれにあった設計が必要です。弊社では非常に高いテスト設計技術を持ったメンバーをそろえております。

開発

トレーニングを受ければお客様自身で自動化できますが、より早く自動化したい場合や、最初にサンプルとなるコードが欲しい場合はご依頼ください。

サポート

弊社の提案する自動テストは運用時のトラブルを少なくする設計です。解決の難しい問題が発生した場合は現場に伺って解決いたします。メールサポートも受け付けております。

どれを依頼していいかわからない場合も、まずはご相談ください

各現場に最適なプランをご提案、お見積りいたします。経験豊富なコンサルタントがご相談に伺います。