|
 |
ソフトウェア > Lotus > Lotus Developer Domain > 製品別技術情報 > その他の製品 >
LDD Today
Lotus Workplace Collaborative Learningをテストするコース・オファリングの作成
 |
 |
 |
by Charles Raymond Smith, Software Engineer, IBM
レベル:中級者
原文の掲載:2004年3月15日
実際にLotus Workplace環境を導入、稼働する前に、前もってどのように動作しているかを知っておくことはよいことだとはおもいませんか。一つの方法としては実際に稼働しているプロフィールを通じて、負荷やスクリプトを使いながらアクティブ・ユーザー・コミュニティーをシミュレートして見ていくことがあげられます。この記事では、Lotus
Workplace Collaborative Learningの実際の実環境のプロフィールを実行するのを支援する、ツールの作成方法を説明していきます。
IBM Lotus Workplace 1.1は、メッセージング、チーム・コラボレーション、コラボレーティブ・ラーニングなどの製品をポータル化されたコラボレーティブ・プラットフォームを提供しています。この中には新規製品もあります。例えば、アドイン製品であるLotus
Workplace for Business Controls and Reportingは、Sarbanes-Oxleyに準拠するように設計されたツールです。他の製品は、既存のIBM/Lotus技術で作られたものです。後者の例としては、Lotus
Workplace Collaborative Learningがあり、Lotus Learning Management System (LMS)の同じ機能の多くを持っています。
前の記事で触れたように、Lotus Workplaceサイトの多くは、展開のプランを今作り始めたところです。このプロセスにおけるキーとなるツールは"operational
profiling"です。この"operational profiling"を使えば、典型的なユーザーの使用状況でのアクティブな大きなコミュニティーの負荷をシミュレートするスクリプトを作成できます。そうすることで、Lotus
Workplace環境全体がどのように動作するかを予想し、最適化から得られるメリットをある程度予想することができます。また、操作のプロファイリングにより、企業全体での展開に必要なものが製品に備わっているかを確認するのにも役立ちます。
この記事では、Lotus Workplace Collaborative Learningの開発過程の一部で、操作のプロファイリングを実施した方法について記載しています。ここで扱うテストでは、Rational
Performance TesterのRational Robot GUIを使い、ユーザーひとりによるLotus
Workplace Collaborative Learningコース・カタログへのコース・オファリングの追加の操作を記録します。そして、記録されたスクリプトを一般化して、自動的に200の新規コース・オファリングをコース・カタログに追加するように変更しました。これにより、カタログを素早く埋めることができ、リアルなLotus
Workplace Collaborative Learningテスト環境を作ることができました。このスクリプトや他のスクリプトを作り、それにより自動的にLotus
Workplaceのテスト・プロセスを作成できました。しかも短時間に徹底的なテストが行えます。(そして、最終的には短い開発サイクルと早期の製品出荷)
我々のゴールはRational Robotを使って、どのようにスクリプトを作成し、使用して各自のLotus
Workplaceテスト要件に対応していくかをデモすることにあります。システム・アーキテクトはこの情報を使って、Lotus
Workplaceの実際の運用に役立つことでしょう。管理者はリソース要件のプランニングに有益なものになるでしょう。
この記事では、読者が経験を積んだシステム管理者かテスト・エンジニアでRationalなどから提供されている負荷テスト・ツールをこれまで使ったことがあることが前提としています。このトピックに関しての更なる情報については、Using Rational Suite TestStudio to analyze a Domino applicationやCreating a Lotus Workplace Messaging test scenario with Rational Suite
TestStudioをご覧ください。
最初として、このLotus Workplace Collaborative Learningのテストは、基本機能を確認するためのシンプルなマニュアル・テストから構成されています。このフェーズでは、大規模な実際環境で必要となる"ボリューム(volume)"テストの領域を切り出しました。このボリューム・テストでは、ある程度の自動化が作業を限られた時間で行うには必要になります。そのため、各テスト用にテスト・スクリプトを作成し、大規模で量的にも多いユーザーの活動を再現しました。このスクリプトを作成する一般的な手順は以下の通りです。
- Rational Robotを使用して、一人のユーザーの特定の操作を記録します。このケースでは、コース・オファリングをLotus
Workplace Collaborative Learningのコース・カタログに追加する作業です。Rational
Robotはこの操作をスクリプトに記録します。
- ステップ1で作成したスクリプトを編集して、"パラメーター対応"のスクリプトに変換します。そうすることで、他のマシンでも動作させることができ、大ボリュームの活動を再現する適切なループなどを実行できるようになります。
- その手数とスクリプトをデバッグし実行させます。
- 環境や製品の変更に合わせて、スクリプトを適宜更新、変更します。
注意すべき事は、コースのカタログへの追加は、Lotus Workplace Collaborative
Learning管理インターフェースを通じて行われることです。これはCollaborative
Learning製品とは別物で、Lotus Workplace My Workplaceのインターフェースからはアクセスできません。Lotus
Workplace Collaborative Learning管理インターフェースへのアクセスおよびコースの追加には、管理者レベルのアクセス権限が必要です。コース・カタログの内容変更を行うスクリプトを作成する際には、この点に注意しなければなりません。
今回作成するスクリプトを真に便利な者にするために、スクリプトは再利用可能で、異なる構成の異なるマシン上で複数のチーム・メンバーが実行できるものでなければなりません。また、スクリプトには柔軟性があり、他と連携して、実際の業務でのヘビーな利用に耐えうる負荷を作り出せるものでなければなりません。Rational
Robotを使うことでそれらの必要条件を満たしたスクリプトの作成が可能です。
Rational Robotは2つのフォームのテスト・スクリプト作成をサポートしています。Virtual
User (VU)とGraphical User Interface (GUI)です・双方のスクリプトとも、実際のユーザー操作により作成されるスクリプトであり、一般利用のためにそれを編集したものです。VUスクリプトは複数の仮想ユーザーをシミュレートできます。GUIは一人のユーザーに制限されます。(実際に使用されるVUスクリプトについては、Developing an LWM SMTP workload with Rational Suite TestStudioをご覧ください。)
私たちが行った早期の慣熟テストにおいてVUスクリプトが使用されましたが、最終的にはGUIスクリプトの方がLotus
Workplace Collaborative Learningのテスト要件には適していることが分かりました。具体的には以下の通りです。
- 莫大な数のユーザー操作をシミュレートする必要がないこと。
- GUIであるため、スクリプトの作成(編集、再生)が極めてシンプルであること。
- GUIスクリプトは小さく、モデル化したタスクに極めて近い形でマッピングできること。
前に触れたように、Rational RobotのGUI機能では、ユーザーの操作を記録し、それと同じ操作を他の複数ユーザーが行ったように見せる再生機能があります。このLotus
Workplace Collaborative Learningスクリプトのケースでは、コース・カタログに追加する操作を記録しています。具体的には以下の操作です。
- ブラウザーを起動します。
- ターゲット・サーバー上のIBM Lotus Workplace Collaborative Learningにアクセスします。
- コース作成の権限を持ったユーザーでログインします。
- コース登録ページへ移動します。
- Course Masterを選択します。
- Add new offering(新規オファリングの追加)を選択します。
- オファリング名を入力します。(オファリング毎に変更しておく必要があります。)
- オファリングの概略説明を入力します。(オファリング毎に変更しておく必要があります。)
- サーバーを指定します。
- 他のオファリング・オプションを指定します。
- 新規オファリングを登録します。
この結果として出てくるGUIスクリプトは、ここで使う"ボリューム"スクリプトのベースとなるものです。中身は200のオファリングを自動的にコース・カタログに追加するもので、他のマシンでも動作させることもできます。しかし最初に、このスクリプトに数多くの変更を加える必要があります。(Rational
Robot GUIを使って、同様のスクリプトを作成してLotus Workplace My Contactsリストを埋めていく方法については、この記事をご覧ください。)
乗り越えなければならない最初のハードルは、Lotus Workplace Collaborative
LearningのURLを選択できるようにステップを一般化することです。手動でこれを行います。典型的には、これはクリックしてブラウザーを前に持ってきます。(例えば、Microsoft
Internet Explorer) そしてURLをタイプします。Rational Robotの記録から作成されたスクリプトには、以下のような流れの記述になっているはずです。
Window SetContext, "Caption=Program Manager", ""
ListView DblClick, "Text=FolderView;\;ItemText=Internet Explorer",
"Coords=37,15"
Window SetContext, "Caption=Google - Microsoft Internet Explorer",
""
ComboEditBox Click, "ObjectIndex=2", "Coords=122,9"
InputKeys "http://blade3.pie.notesdev.ibm.com/lms-lmm{ENTER}" |
|
単一のユーザーの場合にはうまく動作するかもしれませんが、自動処理で使用される場合にはいくつかの課題がでてきます。
- このスクリプトはある特定のアイコンのデスクトップ上の位置に依存していること。ここでは、Coords=37,15。
- このスクリプトはInternet Explorerが必須であること。
- ブラウザーのホーム・ページはCaption=Googleにセットされていること。
- このスクリプトの値は再利用に必要な"パラメーター対応"に使用できないこと。
これらの問題に対応するために、以下のようにスクリプトを編集しました。この変更により、ユーザーのデスクトップ設定に依存することが亡くなり、他のマシンでも利用できるようになります。
Window SetContext, "Caption=Program Manager",""
InputKeys "{LEFTWIN KeyDn}r"
Window SetContext, "Caption=Run", ""
InputKeys "iexplore.exe"
InputKeys "{ENTER}"
InputKeys "http://blade3.pie.notesdev.ibm.com/lms-lmm{ENTER}" |
|
上のスクリプトで最初の5行は、ユーザーが開くURLのインスタンス数と同数になります。従って、これらのラインをサブルーチン化できます。最後の行は、URL名を含んだ変数を使うことができます。この変数はサブルーチンのパラメーターとして与えることができます。新たに作ったサブルーチンは以下の例のようになります。
'Iexplore - Function To Launch Internet Explorer
'Parameter: URL to begin browser
Sub Iexplore (initialURL as String)
Window SetContext, "Caption=Program Manager",""
InputKeys "{LEFTWIN KeyDn}r"
Window SetContext, "Caption=Run", ""
InputKeys "iexplore.exe "+ initialURL
InputKeys "{ENTER}"
End Sub |
|
このタイプのコードの再利用ではよく求められることですが、カット&ペーストの操作を最小限に抑えるために、Iexplore.sbhというヘッダー・ファイルにサブルーチンを置きます。そして、以下に似たコードを作成します。
'$include "iexplore.sbh" ' Bring in iexplore
…
desiredURL = our application’s URL
…
call Iexplore (desiredURL) |
|
そして、更に希望するURLへのナビゲーションをシンプルにするために、以下のコードを使用します。
desiredURL = our application’s URL
…
StartBrowser desiredURL, "" |
|
この一部分のコードは、テスト・スクリプトでブラウザー・アプリケーション名をハード・コードする必要がないようにしてあります。
変更は不可避ですので、計画を立てましょう。特にテスト・スクリプトの場合には。例えば、このテスト・スクリプトの作成と利用の最中に、動作させるサーバーを頻繁に替える必要がでてきます。特に他のサーバーを立てて、今のサーバーを止めている場合などです。変更が比較的に簡単なスクリプトもありますが、中には時間がかかりミスを起こしやすいものもあります。予め変更内容を予想し、テストへのインパクトを少なくするために、カスタマイゼーションを行いました。
デスクトップの設定以外に、テスト環境での一般的な変更として、どのサーバー上でテストを実行するかがあげられます。常にスクリプトへの変更が求められるものでありますが、できるだけ最小限で済むようにしました。例えば、サーバー名は常にbase_name.domain_nameの形にしています。ドメイン名は滅多に変更することがないため、以下のようなコードを使うことができるでしょう。
Dim cmd_serverdomain As String ' added to base to complete servername
Dim cmd_servername As String ' Server name, set in main
...
Sub Main
...
cmd_serverbase = "blade3"
cmd_serverdomain = "pie.notesdev.ibm.com"
cmd_servername = "" ' from base if ""
...
if len(cmd_servername) = 0 then
cmd_servername = "http://" + cmd_serverbase _
+ "." + cmd_serverdomain
end if |
|
このコード部分は以下のメリットがあります。
- ベースのサーバー名の変更(例えば、blade2)では、1行の変更だけで済む。
- ファイル名の変更が必要な場合でも、1行だけにしか影響がないこと。(cmd_servername
= yourname)
- プログラム・パラメーターは、cmd_prefixにより簡単に見分けがつくこと。
- テスト・ユーザーのアカウント名やメール・アドレスは、テスト・サーバーと密接に関連していることが多くあります。つまり、サーバーが変更になれば、ユーザー名も変更になることを意味しています。この痛みを和らげるために、以下に似たコードを使いました。
Dim cmd_serverbase As String ' e.g. blade3, if cmd_servername
' is not set
Dim cmd_userprefix As String ' Prefix to user name
Dim cmd_coursename As String ' course id (uniq substr)
...
Sub Main
...
cmd_serverbase = "blade3"
cmd_userprefix = ""
...
if len(cmd_userprefix) = 0 then
cmd_userprefix = cmd_serverbase + "user"
end if
...
for i = cmd_firstuser to cmd_lastuser
username = cmd_userprefix + format(i, "#")
call enroll(username, cmd_coursename)
next i
...
End Sub |
|
このコードでは以下のことをサポートしています。
- サーバーのベース名(cmd_serverbase)のシンプルな変更により、ユーザー・アカウント名(username)が、newserver
ユーザー<i>へと変更になります。<i>の部分はcmd_firstuserからcmd_lastuserになります。
- ユーザー名はservernameとは異なるプリフィックスから始まるので、一行だけ追加を行うだけで済みます(cmd_userprefix
= yourprefix)。 テスト・ユーザー名の名前の付け方はservername ユーザー<番号>であることに注意してください。例えばblade3user451。)
ナビゲートで必要となるページの中により生成されたダイナミックなHTMLであるために、技術上の課題が出てきます。これに対処するには、ちょっとだけ異なる操作を行った場合の記録をたびたび取ります。(例えば、ボタンのクリックの代わりにタブ)
Rational Robotではこの操作を記録機能としてサポートしています。しかし、全てを一つのシンプルなソリューションでカバーするには至っていません。
編集が終了すると、Lotus Workplace Collaborative Learningに200のオファリングをコース・カタログに追加する、完全に動作するポータブルなスクリプトの完成です。既に何度も再利用をしており、非常に手軽なツールとして実証済みです。以下は、自動的に作成された200のコース・オファリングのビュー画面の一部です。
図1. オファリング・カタログ

このスクリプトを使って、短時間に簡単にLotus Workplace Collaborative Learning
1.1のテスト環境に、数票のコース・オファリングをコース・カタログに追加することができます。この大規模なシミュレートにより、現実的で徹底的なテストが可能になり、かつ製品の開発や完成までのスケジュールにインパクトを与えることなく、限られた時間内にテストを行うことができます。このタイプの自動化はテストに割く労力を考える際に非常に重要なものになります。手動でひとつひとつ行った場合を想像するとよく分かることと思います。
同様に重要なこととして、このRational Robotスクリプトは柔軟で適応性が高いものです。つまり、このツールとメソッドを、各自のテスト・スクリプト作成に役立て、展開プランに必要不可欠なスケーラビリティー情報やキャパシティー情報を収集するのに使用することができるでしょう。Lotus
Workplaceは、比較的に新しく出てきた製品であり、それに慣れるためにはテスト環境をつくり、その特長を記録することです。そうすることで、Lotus
Workplaceの展開に費やす努力を最大効率化することができ、ひいては、スムーズな運用とユーザーの幸福へのつながっていくことでしょう。

著者について(原文のまま)
Charles Raymond (Ray) Smith has worked as a software engineer since the
late 1970's, most recently with IBM in Westford, Massachusetts in the Lotus
Engineering Test group. When not deep in other tasks, Ray is a local champion
for increasing the more effective and extensive use of the Perl scripting
language for problem solving. Ray has a wife and three children, the youngest
of which is currently attending William and Mary College.
|
 |
|
|
|