---
title: "早期のソフトウェアテストは、設計の妥当性を検証します"
date: "2018-07-02"
categories: 
  - "app-development"
  - "mobile"
  - "mobile-development"
  - "mobiletogether"
tags: 
  - "early-software-testing"
  - "mobile-development"
  - "mobiletogether"
  - "software-tools"
description: モバイルデバイス向けのクロスプラットフォームアプリを開発する際、特に重要なのは、様々な物理的特性やオペレーティングシステムの機能を持つデバイスに対応するため、早期にソフトウェアのテストを行うことです。
---
Status: #blog

Tags:  #early-software-testing #mobile-development #mobiletogether #software-tools

Categories: [mobile-development](/blog/ja/category/mobile-development.md) | [mobile-development](/blog/ja/category/mobile-development.md) | [mobile-development](/blog/ja/category/mobile-development.md) | [mobile-development](/blog/ja/category/mobile-development.md)
# 早期のソフトウェアテストは、設計の妥当性を検証します

「早期に、そして頻繁にテストを行う」という考え方は、アジャイルソフトウェア開発の戦略として生まれ、現在ではあらゆる分野のソフトウェア開発者にとって不可欠な原則となっています。特に、クロスプラットフォームのアプリケーションを開発する開発者にとって、早期のテストは重要です。なぜなら、彼らは様々な物理的特徴やオペレーティングシステムの機能を備えたモバイルデバイスに対応する必要があるからです。

MobileTogetherには、各モバイルプラットフォームごとに時間のかかるコンパイル、デプロイ、デバッグのサイクルを繰り返すことなく、開発プロセスに早期のソフトウェアテストを組み込むための機能が備わっています。Altovaのウェブサイトでは、[MobileTogetherシミュレーター](https://www.altova.com/ja/mobiletogether/app-development#test-app)による早期ソフトウェアテスト機能について説明されており、また、[テストケース](https://www.altova.com/blog/automated-testing-for-mobile-apps/)において、特定の操作のセットを記録し、再実行できる機能についてもブログで紹介しています。

この投稿では、クライアント環境でのテスト実行について説明します。MobileTogether Designerに組み込まれているこの機能により、開発者は、Android、iOS、Windowsデスクトップ、またはWindows Phoneなど、サポートされているあらゆるモバイルデバイスやプラットフォーム上で、アプリのデザインを瞬時に確認し、ロジックや機能を検証することができます。

[![](/blog/images/shutterstock_88166515.jpg)](shutterstock_88166515.jpg)

<!--more-->

クライアント環境でのテスト実行は、特に以下の種類のアプリケーションの初期段階でのソフトウェアテストにおいて非常に有効です

- Windowsプラットフォーム上のデザイナーでは利用できない、モバイル機能（例えば、SMSメッセージの送受信など）をご利用いただけます
- オペレーティングシステムによって動作がわずかに異なる機能を使用します。例えば、「Geolocationを表示」という機能は、クライアントのデフォルトの地図アプリケーションを開く動作を行います
- 新しいモバイルモデルでテストを行う必要があります。そのモデルの画面サイズが、デザイナーが使用するプレビューデバイスと一致しない可能性があるためです

テスト実行に必要な条件は非常にシンプルです。テストに使用するモバイルデバイスには、MobileTogether Client アプリがインストールされている必要があります。また、モバイルデバイスと MobileTogether Designer ワークステーションが同じネットワークに接続されており、Designer ワークステーションのネットワークアドレスが、モバイルデバイス上で MobileTogether サーバーとして設定されている必要があります。

クライアントデバイスが準備完了すると、開発者は、デザイナープロジェクトのメニューまたは便利なツールバーから、「クライアントでのテスト実行」を開始できます

[![MobileTogetherにおける初期段階のソフトウェアテストのために、クライアントツールバーのアイコンに関する試用版を公開します](/blog/images/MobileTogether-toolbar-1.png)](MobileTogether-toolbar-1.png)

GPS機能を活用した、現在開発中のアプリケーションについて見ていきましょう。このアプリケーションの開発者は、動作確認用のデバイスとしてiPhone 6 Plusを選択しています。

アプリケーションをテストする最初の機会は、MobileTogether Designerに搭載されている機能である[MobileTogetherシミュレーター](https://www.altova.com/ja/mobiletogether/app-development#test-app)を使用することです。このシミュレーターは、開発のあらゆる段階で利用できます。

シミュレーターのメイン画面には、選択されたプレビューデバイス上にアプリがどのように表示されるかを確認できます。開発者は、デバイスの選択を変更することで、iOS、Android、Windowsなど、様々なデバイス上でのUI表示を確認したり、縦向きと横向きの表示をその場で切り替えたりすることができます。

このシミュレーターは、アプリケーションの実行中にページソースデータツリーで発生する変更をリアルタイムで反映します。デザイナーの「メッセージ」ウィンドウには、実行中の詳細なステップごとのレポートが表示され、クライアントアプリケーションとサーバー間のメッセージも含まれます。シミュレーション中は、ユーザーの操作が必要なコントロールはすべて有効になります。

以下に、シミュレーター上で動作しているアプリの画面を示します

[![MobileTogetherシミュレーターにおける初期段階のソフトウェアテスト](/blog/images/MobileTogether-simulator-window.png)](MobileTogether-simulator-window.png)

すぐに2つの問題点が明らかになります。まず、シミュレーターは実際のGPS座標を報告しません。代わりに、モバイルデバイスの動作とGPS座標の更新をシミュレートするために、データファイルを使用しています。次に、アプリ内の「地図表示」ボタンをクリックすると、Windowsのワークステーション上で動作しているデザイナー上でBingマップが起動されますが、本来は実際のiPhoneではデフォルトの地図アプリとしてApple Mapsが起動されるべきです。

クライアント環境でのテスト実行機能を使用することで、実際のモバイルデバイス上でアプリケーションを実行し、正確なGPS機能を確認し、地図表示ボタンの動作を検証することができます。最初のテストでは、Androidスマートフォンを使用します。「クライアントでのテスト実行」ボタンをクリックすると、デザイナー内に新しいウィンドウが開きます

[![顧客向けに試験運用を開始し、早期にソフトウェアのテストを実施します](/blog/images/trial_run-1.png)](trial_run-1.png)

この時点では、DesignerアプリケーションがMobileTogetherサーバーとしても機能しています。クライアントデバイスがアプリケーションを起動すると、内部のメッセージウィンドウが開きます。

開発者は、デザイナーのダイアログで「はい」をクリックして続行し、アプリケーションがクライアントデバイス上で実行されます。しかし、すぐに予期せぬ問題が発生しました。デフォルトのテキストサイズが非常に小さいのです

[![Androidスマートフォンでの最初のテスト稼働](/blog/images/screenshot-1-Android.png)](screenshot-1-Android.png)

テキストサイズを大きくするために「Abc+」ボタンを単純にクリックし、最終的なユーザーにも同じように操作してもらうこともできますが、それはあまり洗練された、ユーザーフレンドリーな解決策とは言えません。さらに調査した結果、デザイナーにある「クライアントでのテスト実行」ウィンドウを使用することで、アプリケーションが動作している際のデータ構造を確認できます

[![クライアント環境でのトライアル実行時に、クライアントデータに関する初期段階のソフトウェアテスト](/blog/images/trial_run-2.png)](trial_run-2.png)

永続データツリー内の `textSize` 要素には、テキストラベルやボタンのフォントサイズを絶対ピクセル単位で設定する値が格納されています。デフォルト値として20が設定されましたが、これはデザイン段階でiPhone 6 Plusでは問題ありませんでしたが、現在のデバイスでは適切に機能しません。

各クライアントデバイスごとに、デフォルトのテキストサイズを固定値から、ピクセルサイズに基づいて動的に変化する関数に簡単に変更できます。その後、すぐに新しいテストを実施できます。

MobileTogetherは、アプリケーションが実行中に、開発者があらゆるエンドユーザーデバイスの様々な特性にアクセスできるように、グローバル変数を提供します。デザイナーの「グローバル変数」ウィンドウでは、選択されたプレビューデバイスの値が表示されます。以下に、iPhone 6 Plusの値をキャプチャしたスクリーンショットを示します

[![MobileTogetherデザイナーにおけるグローバル変数ウィンドウ](/blog/images/global-variables.png)](global-variables.png)

`textSize`要素にデフォルト値として20ピクセルを設定する代わりに、グローバル変数`MT_DeviceHeight`に基づいて関数を作成できます。20を736で割ると約2.7%になるため、この値を活用して、どのクライアントデバイスでも初期の`textSize`を設定するためのXPath関数を作成します

[![クライアントデバイスの種類に応じて、テキストのサイズを調整する関数を使用します](/blog/images/textSize-function.png)](textSize-function.png)

これで、Androidスマートフォンを使って、クライアント環境での動作を再度テストし、結果を確認することができます。

[![顧客への二回目のテストでは、新たに計算されたテキストのサイズが表示されました](/blog/images/new-textSize.png)](new-textSize.png)

上記の「試運転」画面では、新たに計算されたデフォルトのtextSizeの値が表示されています。以下に、スマートフォンからの新しいスクリーンショットを示します

[![新しいデフォルトのテキストサイズを検証するために、顧客に対してテストを実施します](/blog/images/screenshot-2-Android.png)](screenshot-2-Android.png)

デバイスの画面の高さに基づいて自動的に計算されるテキストのサイズは、以前よりもずっと適切で、ユーザーにとって使いやすくなっています。また、"Abc-"ボタンと"Abc+"ボタンを使用することで、テキストサイズをさらに細かく調整できます。これらのボタンは、それぞれtextSize要素から値を減算したり、加算したりするだけです。

さて、元の課題である、アプリ内の「マップ表示」ボタンの動作検証に戻りましょう。以下に、アプリの画面と、Androidスマートフォンでの対応するマップ表示のスクリーンショットを示します

      [![Android端末での試用テスト：クライアント環境での早期ソフトウェアテスト](/blog/images/screenshot-3-Android.png)](screenshot-3-Android.png)
[![Android端末の「地図表示」ボタンを押すと、早期ソフトウェアテスト中にGoogleマップが起動します](/blog/images/screenshot-4-Android.png)](screenshot-4-Android.png)

以下に、同じ写真がiPhoneで撮影されたものを紹介します

      [![初期ソフトウェアテスト中のiPhone画面キャプチャ](/blog/images/iPhone-screen-1.png)](iPhone-screen-1.png)
[![初期ソフトウェアテスト中に、iPhoneがApple Mapsを起動している様子](/blog/images/iPhone-screen-2.png)](iPhone-screen-2.png)

上記の4つのスクリーンショットはすべて、クライアント環境でのテスト実行中に撮影されたものです。各プラットフォームで表示される地図の正確な内容は、それぞれの地図アプリケーションの機能やユーザー設定によって異なります。例えば、Androidスマートフォンで使用できるGoogleマップにはストリートビュー機能がありますが、Appleのマップアプリにはその機能がありません。

洗練されたアプリケーションを開発するために、MobileTogetherの様々な機能を活用し、クライアント環境での初期段階のテストを「トライアルラン」で確認することができます。これには、統合されたヘルプ、チュートリアル、そして多くのサンプルが付属した、無料で利用できるMobileTogether Designerを[ダウンロード](https://www.altova.com/ja/download/mobiletogether.html)することで実現できます。
