(57)【要約】【課題】並列処理や並行処理による順不同の処理によるデータの異同を排除した比較処理を実現すること。【解決手段】データ突合せ処理サブシステム１３０の入力データタグ付け部１３１に、入力データの各レコードに入力レコードＩＤのタグを付けさせると共に、出力データ突合せ部１３４に、テストプログラムを実行させた非分散処理環境１４０及び分散処理環境１５０から想定出力データ及び実出力データを受け取らせ、該想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせるデータ比較システム及びデータ比較方法。【選択図】図１
2015018403.tif 000002
【特許請求の範囲】
【請求項１】
分散処理することを想定されたテスト対象のテストプログラムを分散せずに順次実行する非分散処理サーバを含む非分散処理環境と、該テストプログラムを分散して個々に実行する複数の分散処理サーバを含む分散処理環境と、該非分散処理環境及び分散処理環境に接続され、前記非分散処理環境及び分散処理環境からの出力データの突き合せを行うデータ突合せ処理サブシステムを含むコンピュータシステムとを備えるデータ比較システムであって、
前記データ突合せ処理サブシステムが、
入力データの各レコードにレコードを一意に識別するための入力レコードＩＤをタグとして付与する入力データタグ付け部と、
入力データ及びテストプログラムを非分散処理環境に渡し、該非分散処理環境がテストプログラムの実行により得られた想定出力データを受け取る想定出力データ生成部と、
入力データ及びテストプログラムを分散処理環境に渡し、該分散処理環境がテストプログラムの実行により得られた実出力データを受け取る実出力データ生成部と、
想定出力データと実出力データを突合せて、突合せ結果を出力する出力データ突合せ部とを有し、
前記非分散処理環境が、
前記データ突合せ処理サブシステムから受け取ったテストプログラムを非分散処理サーバ上で実行し、想定出力データを得る非分散処理プログラム実行部と、
該非分散処理プログラム実行部がテストプログラムを実行するとき、入力データに付与された入力レコードＩＤを出力データに付与するタグ付与部とを含む非分散処理サーバを有し、
前記分散処理環境が、
前記データ突合せ処理サブシステムから受け取ったテストプログラムを各分散処理サーバ上で分散実行し、実出力データを得る分散処理プログラム実行部と、
該分散処理プログラム実行部がテストプログラムを実行するとき、入力データに付与された入力レコードＩＤを出力データに付与するタグ付与部とを含む複数の分散処理サーバを有し、
前記データ突合せ処理サブシステムが、
前記入力データタグ付け部に、受け取った入力データの各レコードに入力レコードＩＤのタグを付けさせる第１工程と、
前記想定出力データ生成部に、前記第１工程によりタグ付けした入力データ及びテストプログラムを非分散処理環境に送ってテストプログラムを実行させ、想定出力データを生成させる第２工程と、
前記実出力データ生成部に、前記第１工程によりタグ付けした入力データ及びテストプログラムを分散処理環境に送ってテストプログラムを実行させ、実出力データを生成させる第３工程と、
前記出力データ突合せ部に、前記第２工程及び第３工程によりテストプログラムを実行させた非分散処理環境及び分散処理環境から想定出力データ及び実出力データを受け取らせ、該想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる第４工程と、
表示部に、想定出力データ及び実出力データの突き合わせ結果を表示させる第５工程とを実行させることを特徴とするデータ比較システム。
【請求項２】
前記出力データ突合せ部に、前記想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる第４工程において、突合せたタグ間の差分を抽出してデータで異なるレコードを特定することを特徴とする請求項１記載のデータ比較システム。
【請求項３】
前記出力データ突合せ部に、前記想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる第４工程において、突合せたタグ間の差分を抽出して出力データで異なるレコードを特定し、出力データで異なるレコードに対応する入力データを特定することを特徴とする請求項１又は２記載のデータ比較システム。
【請求項４】
分散処理することを想定されたテスト対象のテストプログラムを分散せずに順次実行する非分散処理サーバを含む非分散処理環境と、該テストプログラムを分散して個々に実行する複数の分散処理サーバを含む分散処理環境と、該非分散処理環境及び分散処理環境に接続され、前記非分散処理環境及び分散処理環境からの出力データの突き合せを行うデータ突合せ処理サブシステムを含むコンピュータシステムとを備え、
前記データ突合せ処理サブシステムが、
入力データの各レコードにレコードを一意に識別するための入力レコードＩＤをタグとして付与する入力データタグ付け部と、
入力データ及びテストプログラムを非分散処理環境に渡し、該非分散処理環境がテストプログラムの実行により得られた想定出力データを受け取る想定出力データ生成部と、
入力データ及びテストプログラムを分散処理環境に渡し、該分散処理環境がテストプログラムの実行により得られた実出力データを受け取る実出力データ生成部と、
想定出力データと実出力データを突合せて、突合せ結果を出力する出力データ突合せ部とを有し、
前記非分散処理環境が、
前記データ突合せ処理サブシステムから受け取ったテストプログラムを非分散処理サーバ上で実行し、想定出力データを得る非分散処理プログラム実行部と、
該非分散処理プログラム実行部がテストプログラムを実行するとき、入力データに付与された入力レコードＩＤを出力データに付与するタグ付与部とを含む非分散処理サーバを有し、
前記分散処理環境が、
前記データ突合せ処理サブシステムから受け取ったテストプログラムを各分散処理サーバ上で分散実行し、実出力データを得る分散処理プログラム実行部と、
該分散処理プログラム実行部がテストプログラムを実行するとき、入力データに付与された入力レコードＩＤを出力データに付与するタグ付与部とを含む複数の分散処理サーバを有するコンピュータシステムのデータ比較方法であって、
前記データ突合せ処理サブシステムに、
前記入力データタグ付け部に、受け取った入力データの各レコードに入力レコードＩＤのタグを付けさせる第１工程と、
前記想定出力データ生成部に、前記第１工程によりタグ付けした入力データ及びテストプログラムを非分散処理環境に送ってテストプログラムを実行させ、想定出力データを生成させる第２工程と、
前記実出力データ生成部に、前記第１工程によりタグ付けした入力データ及びテストプログラムを分散処理環境に送ってテストプログラムを実行させ、実出力データを生成させる第３工程と、
前記出力データ突合せ部に、前記第２工程及び第３工程によりテストプログラムを実行させた非分散処理環境及び分散処理環境から想定出力データ及び実出力データを受け取らせ、該想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる第４工程と、
前記表示部に、想定出力データ及び実出力データの突き合わせ結果を表示させる第５工程とを実行させることを特徴とするデータ比較方法。
【請求項５】
前記出力データ突合せ部に、前記想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる第４工程において、突合せたタグ間の差分を抽出してデータで異なるレコードを特定することを特徴とする請求項４記載のデータ比較方法。
【請求項６】
前記出力データ突合せ部に、前記想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる第４工程において、突合せたタグ間の差分を抽出して出力データで異なるレコードを特定し、出力データで異なるレコードに対応する入力データを特定することを特徴とする請求項４又は５記載のデータ比較方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバにデータを分散して格納し、分散してデータ処理を実行する分散処理環境におけるソフトウェア（プログラム）のテストを行うためのデータ比較システム及びデータ比較方法に関する。
【背景技術】
【０００２】
一般にコンピュータシステムにおいては、コンピュータプログラムが仕様どおりに正しく動作しているかを確認するソフトウェアテストが行われており、このソフトウェアテストの一般的な実施方法として、（１）コンピュータプログラムに対する入力データと想定される出力データを用意し、その入力データを用いて実際にコンピュータプログラムを実行して得た出力データと想定される出力データを比較し、２つの出力データが同一であるかどうかでコンピュータプログラムが正しく実行しているか否かを確認する方法と、（２）処理やデータを分散してコンピュータプログラムを実行し、コンピュータプログラムの処理時間を短縮する分散処理による確認方法とが提案され、前述の分散処理による確認方法が記載された文献としては、下記の非特許文献１及び２が挙げられ、非特許文献１には、処理の進行状況や割り当て可能な処理数等により、実行するサーバをミドルウェアで自動的に決定する技術が記載され、非特許文献２には、各サーバのリソースの使用状況やネットワークの使用状況などによりデータをどのサーバから読み出すかをミドルウェアで決定する技術が記載されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｔｏｍ  Ｗｈｉｔｅ著、「Ｈａｄｏｏｐ  第２版」、株式会社オライリジージャパン、２０１１年７月２２日発行
【０００４】
【非特許文献２】Ｅｂｅｎ  Ｈｅｗｉｔｔ著、「Ｃａｓｓａｎｄｒａ」、株式会社オライリージャパン、２０１１年１２月２４発行
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般に分散処理を行うコンピュータプログラムのソフトウェアテストに際しては、想定する出力データは、サーバにどのようにデータや処理が分散されるか、サーバで他のコンピュータプログラムが動作しているかいないか、などの状況により変わってしまう。このため非特許文献１及び２に記載の技術においては、どのサーバでどの処理が行われるかを把握することが困難であり、どのサーバでどの処理が行われるかにより、出力データのレコード順序が異なってくるため、ソフトウェアテストを行う際の出力データを一意に想定することが困難であるという課題があった。尚、出力データが少量である場合は、１レコードずつそのレコードが実際の出力データ内に含まれているかを調べ、レコードの過不足がないかを確認する方法も考えられるが、データが大量である場合、この方法は実施が極めて困難であると共に、想定する出力データと実際の出力データの突合せで異なっていたレコードがあった場合、コンピュータプログラムの修正を行うには、異なっていた出力データのレコードがどの入力データから得られたのかということを調べる必要があり、この作業を行う場合、異なっていた出力データのレコードがどの入力データのレコードに紐付くのかを１レコードずつ確認する必要があり、入力データが大量である場合、実施が困難であるという課題も有った。
【０００６】
本発明の目的は、前述の従来技術による課題を解決しようとするものであり、並列処理や並行処理による順不同の処理によるデータの異同を排除した比較処理を実現することができるデータ比較システム及びデータ比較方法を提供することを第１の目的とし、想定する出力データと実際の出力データで異なるレコードがあった場合に、その異なっているレコードがどの入力データのレコードに紐付いているかを調べる工数を削減することができるデータ比較システム及びデータ比較方法を提供することを第２の目的とする。
【課題を解決するための手段】
【０００７】
前記目的を達成するため本発明は、分散処理することを想定されたテスト対象のテストプログラムを分散せずに順次実行する非分散処理サーバを含む非分散処理環境と、該テストプログラムを分散して個々に実行する複数の分散処理サーバを含む分散処理環境と、該非分散処理環境及び分散処理環境に接続され、前記非分散処理環境及び分散処理環境からの出力データの突き合せを行うデータ突合せ処理サブシステムを含むコンピュータシステムとを備えるデータ比較システムであって、
前記データ突合せ処理サブシステムが、
入力データの各レコードにレコードを一意に識別するための入力レコードＩＤをタグとして付与する入力データタグ付け部と、
入力データ及びテストプログラムを非分散処理環境に渡し、該非分散処理環境がテストプログラムの実行により得られた想定出力データを受け取る想定出力データ生成部と、
入力データ及びテストプログラムを分散処理環境に渡し、該分散処理環境がテストプログラムの実行により得られた実出力データを受け取る実出力データ生成部と、
想定出力データと実出力データを突合せて、突合せ結果を出力する出力データ突合せ部とを有し、
前記非分散処理環境が、
前記データ突合せ処理サブシステムから受け取ったテストプログラムを非分散処理サーバ上で実行し、想定出力データを得る非分散処理プログラム実行部と、
該非分散処理プログラム実行部がテストプログラムを実行するとき、入力データに付与された入力レコードＩＤを出力データに付与するタグ付与部とを含む非分散処理サーバを有し、
前記分散処理環境が、
前記データ突合せ処理サブシステムから受け取ったテストプログラムを各分散処理サーバ上で分散実行し、実出力データを得る分散処理プログラム実行部と、
該分散処理プログラム実行部がテストプログラムを実行するとき、入力データに付与された入力レコードＩＤを出力データに付与するタグ付与部とを含む複数の分散処理サーバを有し、
前記データ突合せ処理サブシステムが、
前記入力データタグ付け部に、受け取った入力データの各レコードに入力レコードＩＤのタグを付けさせる第１工程と、
前記想定出力データ生成部に、前記第１工程によりタグ付けした入力データ及びテストプログラムを非分散処理環境に送ってテストプログラムを実行させ、想定出力データを生成させる第２工程と、
前記実出力データ生成部に、前記第１工程によりタグ付けした入力データ及びテストプログラムを分散処理環境に送ってテストプログラムを実行させ、実出力データを生成させる第３工程と、
前記出力データ突合せ部に、前記第２工程及び第３工程によりテストプログラムを実行させた非分散処理環境及び分散処理環境から想定出力データ及び実出力データを受け取らせ、該想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる第４工程と、
表示部に、想定出力データ及び実出力データの突き合わせ結果を表示させる第５工程とを実行させることを第１の特徴とする。
【０００８】
また、本発明は、第１の特徴のデータ比較システムにおいて、前記出力データ突合せ部に、前記想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる第４工程において、突合せたタグ間の差分を抽出してデータで異なるレコードを特定することを第２の特徴とし、前記何れかの特徴のデータ比較システムにおいて、前記出力データ突合せ部に、前記想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる第４工程において、突合せたタグ間の差分を抽出して出力データで異なるレコードを特定し、出力データで異なるレコードに対応する入力データを特定することを第３の特徴とする。
【０００９】
また、本発明は、分散処理することを想定されたテスト対象のテストプログラムを分散せずに順次実行する非分散処理サーバを含む非分散処理環境と、該テストプログラムを分散して個々に実行する複数の分散処理サーバを含む分散処理環境と、該非分散処理環境及び分散処理環境に接続され、前記非分散処理環境及び分散処理環境からの出力データの突き合せを行うデータ突合せ処理サブシステムを含むコンピュータシステムとを備え、
前記データ突合せ処理サブシステムが、
入力データの各レコードにレコードを一意に識別するための入力レコードＩＤをタグとして付与する入力データタグ付け部と、
入力データ及びテストプログラムを非分散処理環境に渡し、該非分散処理環境がテストプログラムの実行により得られた想定出力データを受け取る想定出力データ生成部と、
入力データ及びテストプログラムを分散処理環境に渡し、該分散処理環境がテストプログラムの実行により得られた実出力データを受け取る実出力データ生成部と、
想定出力データと実出力データを突合せて、突合せ結果を出力する出力データ突合せ部とを有し、
前記非分散処理環境が、
前記データ突合せ処理サブシステムから受け取ったテストプログラムを非分散処理サーバ上で実行し、想定出力データを得る非分散処理プログラム実行部と、
該非分散処理プログラム実行部がテストプログラムを実行するとき、入力データに付与された入力レコードＩＤを出力データに付与するタグ付与部とを含む非分散処理サーバを有し、
前記分散処理環境が、
前記データ突合せ処理サブシステムから受け取ったテストプログラムを各分散処理サーバ上で分散実行し、実出力データを得る分散処理プログラム実行部と、
該分散処理プログラム実行部がテストプログラムを実行するとき、入力データに付与された入力レコードＩＤを出力データに付与するタグ付与部とを含む複数の分散処理サーバを有するコンピュータシステムのデータ比較方法であって、
前記データ突合せ処理サブシステムに、
前記入力データタグ付け部に、受け取った入力データの各レコードに入力レコードＩＤのタグを付けさせる第１工程と、
前記想定出力データ生成部に、前記第１工程によりタグ付けした入力データ及びテストプログラムを非分散処理環境に送ってテストプログラムを実行させ、想定出力データを生成させる第２工程と、
前記実出力データ生成部に、前記第１工程によりタグ付けした入力データ及びテストプログラムを分散処理環境に送ってテストプログラムを実行させ、実出力データを生成させる第３工程と、
前記出力データ突合せ部に、前記第２工程及び第３工程によりテストプログラムを実行させた非分散処理環境及び分散処理環境から想定出力データ及び実出力データを受け取らせ、該想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる第４工程と、
表示部に、想定出力データ及び実出力データの突き合わせ結果を表示させる第５工程とを実行させることを第４の特徴とする。
【００１０】
また、本発明は、第４の特徴のデータ比較方法において、前記出力データ突合せ部に、前記想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる第４工程において、突合せたタグ間の差分を抽出してデータで異なるレコードを特定することを第５の特徴とし、前記何れかの特徴のデータ比較方法において、前記出力データ突合せ部に、前記想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる第４工程において、突合せたタグ間の差分を抽出して出力データで異なるレコードを特定し、出力データで異なるレコードに対応する入力データを特定することを第６特徴とする。
【発明の効果】
【００１１】
本発明によるデータ比較システム及びデータ比較方法は、前記データ突合せ処理サブシステムの入力データタグ付け部に、受け取った入力データの各レコードに入力レコードＩＤのタグを付けさせると共に、前記出力データ突合せ部に、テストプログラムを実行させた非分散処理環境及び分散処理環境から想定出力データ及び実出力データを受け取らせ、該想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせることによって、並列処理や並行処理による順不同の処理によるデータの異同を排除した比較処理を実現することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態によるデータ比較システムを示す図。
【図２】本発明の実施形態によるデータ比較全体動作を示すフロー図。
【図３】本発明の実施形態による入力データタグ付け動作を示すフロー図。
【図４】本発明の実施形態による入力データへのタグ付け例を示す図。
【図５】本発明の実施形態による想定データ生成動作を示すフロー図。
【図６】本発明の実施形態による入力データタグ付けによる想定出力データ例を示す図。
【図７】本発明の実施形態による実出力データ生成動作を示すフロー図。
【図８】本発明の実施形態による入力データタグ付けによる実出力データ例を示す図。
【図９】本発明の実施形態による想定出力データと実出力データとの突合せ処理動作を示すフロー図。
【図１０】本発明の実施形態による不正レコードリスト例を示す図。
【図１１】本発明の実施形態による突合せ結果表示画面例を示す図。
【図１２】本発明の実施形態による同一と判定される想定出力データ及び実出力データ例を示す図。
【発明を実施するための形態】
【００１３】
以下、本発明によるデータ比較方法を実現するデータ比較システムの一実施形態を図面を参照して詳細に説明する。
［構成］
本実施形態によるデータ比較システムは、図１に示す如く、テスト対象のソフトウェア（プログラム）を分散せずに順次実行する非分散処理サーバ１４１を含む非分散処理環境１４０と、テスト対象のソフトウェア（プログラム）を分散して個々に実行する分散処理サーバ１５１及び１５２を含む分散処理環境１５０と、該非分散処理環境１４０及び分散処理環境１５０に接続され、前記非分散処理環境１４０及び分散処理環境１５０の出力データの突き合せを行うデータ突合せ処理サブシステム１３０並びに前記非分散処理環境１４０及び分散処理環境１５０とデータ突合せ処理サブシステム１３０間におけるデータ入出力制御を行う入出力制御サブシステム１２０を含む計算機システム１１０とから構成され、この図は相互の関係を模式的に示したものである。
【００１４】
前記入出力制御サブシステム１２０は、前記非分散処理環境１４０及び分散処理環境１５０からの出力データを入力するための入力部１２１と、操作者に後述する突合せ結果表示画面他を表示するための表示部１２２を備え、前記入力部１２１は、ソフトウェアテストの対象とするコンピュータプログラム（テストプログラム）とテストプログラムに与える入力データを受け取り、データ突合せ処理サブシステム１３０に渡す機能を有し、前記表示部１２２は、データ突合せ処理サブシステム１３０からデータの突合せ結果データを受け取り表示する機能を有する。
【００１５】
前記データ突合せ処理サブシステム１３０は、入出力制御サブシステム１２０から受け取った入力データの各レコードにレコードを一意に識別するための記号（入力レコードＩＤ）をタグとして付与する入力データタグ付け部１３１と、入出力制御サブシステム１２０から受け取った入力データとテストプログラムを非分散処理環境１４０に渡し、該非分散処理環境１４０がテストプログラムの実行により得られた出力データ（想定出力データ）を受け取る想定出力データ生成部１３２と、入出力制御サブシステム１２０から受け取った入力データとテストプログラムを分散処理環境１５０に渡し、該分散処理環境１５０がテストプログラムの実行により得られた出力データ（実出力データ）を受け取る実出力データ生成部１３３と、想定出力データと実出力データを突合せて、その結果を入出力制御サブシステム１２０に送る出力データ突合せ部１３４とを備える。
【００１６】
前記非分散処理環境１４０は、データ突合せ処理サブシステム１３０から受け取ったテストプログラムを非分散処理サーバ１４１上で実行し、非分散出力データを得る非分散処理プログラム実行部１４２と、テストプログラムを実行するとき、入力データにつけられた入力レコードＩＤを出力データに付与するタグ付与部１４３と、データ突合せ処理サブシステム１３０から受け取った入力データを保持する非分散データストア１４４とを含む１台の非分散処理サーバ１４１を備える。
【００１７】
前記分散処理環境１５０は、複数台の分散処理サーバ１５１及び１５２を備え、該分散処理サーバ１５１及び１５２は、データ突合せ処理サブシステム１３０から受け取ったテストプログラムを各分散処理サーバ１５１及び１５２上で分散実行して出力結果を得る分散処理プログラム実行部１５３及び１５６と、テストプログラムを実行するとき、入力データにつけられた入力レコードＩＤを出力データに付与するタグ付与部１５４及び１５７と、データ突合せ処理サブシステム１３０から受け取った入力データを分散して保持する分散データストア１５５及び１５８とを備える。
【００１８】
［動作］
次に、ＭａｐＲｅｄｕｃｅフレームワークで作成されたコンピュータプログラムを分散処理環境上でソフトウェアテストする本実施形態によるデータ比較システムの動作を説明する。
【００１９】
まず、本実施形態によるデータ比較システムの全体動作は、図２に示す如く、入出力制御サブシステム１２０が入力部１２１を介して入力データ及びテストプログラムを受け取るステップ２０１と、該入出力制御サブシステム１２０が受け取った入力データ及びテストプログラムをデータ突合せ処理サブシステム１３０に送り、該入力データタグ付け部１３１が受け取った入力データの各レコードに入力レコードＩＤのタグを付けるステップ２０２と、想定出力データ生成部１３２が前記ステップ２０２によりタグ付けした入力データ及びテストプログラムを非分散処理環境１４０に送ってテストプログラムを実行し、想定出力データを生成するステップ２０３と、実出力データ生成部１３３がタグ付けした入力データとテストプログラムを分散処理環境１５０に送ってテストプログラムを実行し、実出力データを生成するステップ２０４と、出力データ突合せ部１３４が非分散処理環境１４０及び分散処理環境１５０のそれぞれから想定出力データと実出力データを受け取り、想定出力データと実出力データの突合せを行うステップ２０５と、表示部１２２が想定出力データと実出力データを表示するステップ２０６とを実行するように動作する。
【００２０】
前記ステップ２０２による入力データに入力レコードＩＤのタグを付ける処理は、図３に示す如く、入力レコードＩＤを１で初期化するステップ３０１と、入力データ内にタグ付けしていないレコードが存在するか否かを判定し、タグ付けしていないレコードが存在しない（Ｙｅｓ）と判定したときに処理を終了するステップ３０２と、該ステップ３０２においてタグ付けしていないレコードが存在する（Ｎｏ）と判定したとき、入力データ内からタグ付けしていないレコードを取り出すステップ３０３と、該ステップ３０３により取り出したレコードに入力レコードＩＤのタグを付与するステップ３０４と、該ステップ３０４によりタグを付与した後、入力レコードＩＤに１を加えて、次の入力レコードＩＤとし、前記ステップ３０２に戻るステップ３０５とを実行することによって、図４に示す如く、例えば、タグ付け前の入力データ４０１が「電車で品川に行った。」、「昨日電車に乗った。」、「電車で大崎に行った。」の３レコードを含んでいるとき、タグ付け後の入力データ４０２の各レコードは、１レコード目からそれぞれ入力レコードＩＤ［１］、［２］、［３］がタグとして付与することができる。このタグ付け後の入力データ４０２の各レコードは、入力レコードＩＤとレコードの内容とその２つを区別するための区切り文字を含み、例えば、区切り文字をカンマとすると、「［１］，電車で品川に行った。」という文字列がタグ付け後の入力データの１レコード目となる。
【００２１】
前記ステップ２０３による想定出力データ生成部１３２が想定出力データを生成する処理は、テストプログラムが非分散処理環境においては仕様どおり正しく実行可能であることが確認できていることを前提としたとき、タグ付け後の入力データとテストプログラムを受け取った非分散処理サーバ１４１がタグ付け後の入力データで取り出していないレコードがあるか判定するステップ５０１と、該ステップ５０１において取り出していないレコードがあると判定したとき、非分散処理サーバ１４１がタグ付けされた入力データから１レコードを取り出すステップ５０２と、非分散処理プログラム実行部１４２が前記ステップ５０２により取り出した１レコードを入力として、テストプログラムのｍａｐ処理を実行するステップ５０３と、タグ付与部１４３がステップ５０３によりｍａｐ処理を実行したときに出力される全てのデータ（中間データ）に対して入力データに付けられていたタグと同じタグを付与し、前記ステップ５０１に戻るステップ５０４と、ステップ５０１において取り出していないレコードがないと判定したとき、ＭａｐＲｅｄｕｃｅフレームワークで中間データをキー毎に集約する際に、タグ付与部１４３が中間データに付与されていたタグをキー毎にリスト形式で集約して、ＭａｐＲｅｄｕｃｅフレームワークで集約されたデータ（集約データ）にタグのリストを付与するステップ５０５と、非分散処理プログラム実行部１４２が集約データを入力としてｒｅｄｕｃｅ処理を実行するステップ５０６と、テストプログラムの出力データとなるｒｅｄｕｃｅ処理の出力データとその出力データに付けられたタグを想定出力データとして出力するステップ５０７とを実行する。
【００２２】
これら処理によって本実施形態によるデータ比較システムは、テストプログラムが日本語の文章が書かれたファイルを入力として、日本語の文章を形態素解析して出現した名詞の数をカウントして名詞とその出現数を出力するプログラムを例としたとき、図６の想定出力データ生成時のタグの付与の例の如く、入力データ６０１の各レコードが、｛［タグ］，入力レコードの内容］の形式で書かれる。この入力データを入力として、ステップ５０３によるｍａｐ処理を実行して、｛［タグ］，キー，バリュー｝の形式で中間データ６０２を出力する。例えば、入力データの１レコード目の｛［１］，電車で品川に行った｝を入力としたとき、入力レコードの内容である「電車で品川に行った」を入力に与えて、ｍａｐ処理を実行すると「電車，１」、「品川，１」という２つのキーとバリューのペアが出力される。この２つのキーとバリューのペアに、入力データで付けられていたタグである［１］をそれぞれに付与する。結果として、「｛［１］，電車，１｝」、「｛［１］，品川，１｝」が中間データとして出力される。次に、中間データはステップ５０４によってキー毎に集約され、｛［タグのリスト］，キー，バリューのリスト］｝の形式の集約データ６０３が出力される。例えば、「電車」というキーで集約された集約データは、｛［１，２，３］，電車，｛１，１，１｝｝となる。集約前のそれぞれの中間データに付与されていたタグは、集約するときにリスト形式で集約を行う。最後に、集約データ６０３を入力として、ｒｅｄｕｃｅ処理を実行して、その結果を出力データ６０４として出力される。｛［１，２，３］，電車，｛１，１，１｝｝を入力として、バリューの数値の総和を計算するｒｅｄｕｃｅ処理を実行すると、｛［１，２，３］，電車，３｝という出力データ６０４が得られる。ｒｅｄｕｃｅ処理の際、バリューの値｛１，１，１｝は、総和が計算されて｛３｝となるが、タグ｛１，２，３｝は、ｒｅｄｕｃｅ処理されずにそのまま｛１，２，３｝のリスト形式で出力される。
【００２３】
前記ステップ２０４による実出力データを生成する処理手順は、図７に示す如く、実出力データ生成部１３３がタグ付け後の入力データを分割し、分散処理環境１５０上の各分散処理サーバ１５１及び１５２に分割したタグ付け後の入力データを分散するステップ７０１と、該ステップ７０１により分割されたタグ付け後入力データ及びテストプログラムを受け取った各分散処理サーバ１５１及び１５２がそれぞれ受け取ったタグ付け後の入力データで取り出していないレコードがあるか否かを判定するステップ７０２と、該ステップ７０２において取り出していないレコードがあると判定したとき、各分散処理サーバ１５１及び１５２が受け取ったタグ付けされた入力データから１レコードを取り出すステップ７０３と、各分散処理サーバ１５１及び１５２上の分散処理プログラム実行部１５３及び１５６が前記ステップ７０３により取り出した１レコードを入力としてテストプログラムのｍａｐ処理を実行するステップ７０４と、各分散処理サーバ１５１及び１５２上のタグ付与部１５４が前記ステップ７０４によりｍａｐ処理を実行したときに出力される全てのデータ（中間データ）に対して、入力データに付けられていたタグと同じタグを付与して前記ステップ７０２に戻るステップ７０５と、前記ステップ７０２において取り出していないレコードがないと判定したとき、中間データと該中間データに付けられているタグを集約（ＭａｐＲｅｄｕｃｅフレームワークで中間データをキー毎に集約する際に、タグ付与部１５４及び１５７が中間データに付与されていたタグをキー毎にリスト形式で集約して、ＭａｐＲｅｄｕｃｅフレームワークで集約されたデータ［集約データ］にタグのリストを付与）するステップ７０６と、各分散処理サーバ１５１及び１５２の非分散処理プログラム実行部１４２が前記ステップ７０６により集約したデータを入力としてｒｅｄｕｃｅ処理を実行するステップ７０７と、テストプログラムの出力データとなるｒｅｄｕｃｅ処理の出力データとその出力データに付けられたタグを想定出力データとして出力するステップ７０８とを実行する。
【００２４】
これら処理によって本実施形態によるデータ比較システムは、分散処理環境１５０がテストプログラムを実行するとき、図８に示す如く、前述した非分散処理環境１４０とは異なり、分割した入力データ８０１を各分散処理サーバ１５１及び１５２に分散して処理を実行するため、各分散処理サーバ１５１及び１５２による処理順序や各分散処理サーバ１５１及び１５２での出力の順序が処理状況により異なるため、最終的な出力データである実出力データ８０２のレコード順序やバリューの出力順序も処理するたびに異なる特性がある。
【００２５】
前記ステップ２０５により出力データ突合せ部１３４が想定出力データと実出力データの突合せを行う処理は、図９に示す如く、想定出力データと実出力データの突合せを行ったときの異なるレコードを登録するリストである不正レコードリストを初期化するステップ９０１と、出力データ突合せ部１３４が想定出力データ内に取り出していないレコードがあるか否かを判定し、取り出していないレコードがないと判定したときに処理を終了するステップ９０２と、該ステップ９０２において取り出していないレコードがあると判定したとき、想定出力データ内から取り出していないレコードを１つ取り出すステップ９０３と、該ステップ９０３により取り出したレコードからキーとタグのリストを取得するステップ９０４と、実出力データ内から前記ステップ９０４により取得したキーと同一のキーをもつレコードを探すステップ９０５と、該ステップ９０５によって実出力データ内から前記ステップ９０４により取得したキーと同一のキーをもつレコードが発見されたか否かを判定するステップ９０６と、該ステップ９０６により実出力データ内に同一のキーが見つからないと判定したとき、不正レコードリストに該当レコードを登録するステップ９１０と、該ステップ９０６において実出力データ内に同一のキーが見つかったとき、その同一のキーをもつレコードからタグのリストを取得するステップ９０７と、ステップ９０７により想定出力データから取得したタグのリストとステップ９０５により実出力データから取得したタグのリストをそれぞれソートするステップ９０８と、該ステップ９０８によりソートしたそれぞれのタグのリストを突合わせ、タグのリストが同一であるか判定し、タグが同一でないと判定したとき、前記不正レコードリストに想定出力データ内の該当レコードを登録するステップ９１０に戻り、タグが同一であると判定したとき、前記ステップ９０２に戻るステップ９０９とを実行する。尚、前記ステップ９０５からステップ９０８までの突合せ処理は同一タグのレコードのキーを突合わせることでも可能である。
【００２６】
これら処理によって本実施形態によるデータ比較システムは、例えば、図１２に示した想定出力データ１２０１と実出力データ１２０２の突合せを行う場合、想定出力データ（１２０１）の１レコード目｛［１，２，３］，電車，３｝と実出力データの１レコード目｛［１，３，２］，電車，３｝は出力順序が異なっているがタグのリストの組が同一であり、想定出力データ１２０１の３レコード目｛｛［２］，昨日，１｝はキーである「昨日」という単語で突合せ対象となる実出力データの４レコード目｛［２］，昨日，１｝を抽出するため、同一のレコードと判定することができる。よって、図１２に示す想定出力データ１２０１と実出力データ１２０２は、突合せ処理で不正がない（一致している）データと判定する。即ち、本実施形態においては、テストプログラムを実行させた非分散処理環境及び分散処理環境から想定出力データ及び実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせるように動作する。
【００２７】
前記ステップ９１０により登録された不正レコードリストの例を図１０を参照して説明する。本例では、図１０（ａ）及び（ｂ）に示した想定出力データ１００１及び実出力データ１００２であるとき、出力される不正レコードリスト１００３は、図１０（ｃ）の如く、想定出力データレコード番号、想定出力データレコード内容、実出力データレコード内容、不正入力レコードのカラムをもち、前記想定出力データレコード番号は、突合せを行った結果、異なっていた想定出力データのレコード番号を格納する。
【００２８】
このように本実施形態においては想定出力データレコード内容は、異なっていた想定出力データのレコードの内容を格納し、実出力データレコード内容は、実出力データ内に突合せ対象となったレコードがある場合はそのレコードが格納され、ない場合は格納されず、不正入力レコードは、出力データで異なるレコードに対応する入力レコードを格納する。例えば、不正レコードリストの１レコード目１００４は、想定出力データ１００１内の３レコード目に対応しており、実出力データ１００２内で同一キーをもつレコードを探すと見つからないため、想定出力データの該当レコードである３レコード目の内容｛［２］，昨日，１｝が不正レコードリストに登録され、実際レコードリストは該当レコードないため、不正レコードリストに空が登録される。不正入力レコードには、異なるレコードに付与されているタグである［２］が格納される。不正レコードリストの２レコード目１００５は、想定出力データ１００１内の１レコード目の｛［１，２，３］，電車，３｝に対応しており、実出力データ１００２内で同一キーをもつ１レコード目の｛［１，３］，電車，３｝と突合せると、タグのリストが異なるため、想定出力データの該当レコードである｛［１，２，３］，電車，３｝と実際レコードリストの該当レコードである｛［１，３］，電車，３｝が不正レコードリストに登録される。不正レコードリストには、想定出力データに付与されているタグ［１，２，３］と実出力データに付与されているタグの［１，３］を比較して、差分である［２］を抽出して格納する。即ち、本実施形態においては、想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる際、突合せたタグ間の差分を抽出してデータで異なるレコードを特定するように動作する。
【００２９】
本実施形態によるデータ比較システムは、図１に示した表示部１２２に想定出力データと実出力データの突合せ結果を表示するものであり、この突合せ結果表示画面１１０１は、図１１に示す如く、不正レコード一覧１１０２を表形式で表示し、この表は、レコード番号・想定出力データ・実出力データ・不正入力レコードのカラムをもち、レコード番号には想定出力データと実出力データで異なるレコードのレコード番号を表示し、想定出力データ及び実出力データには異なるレコードのレコード内容を表示し、正入力レコードには異なるレコードに対応する入力データのレコード番号とレコード内容を表示する。即ち、本実施形態においては、想定出力データと実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせる際、突合せたタグ間の差分を抽出して出力データで異なるレコードを特定し、出力データで異なるレコードに対応する入力データを特定して表示するように動作する。
【００３０】
このように本実施形態によるデータ比較方法を実現するデータ比較システムは、入力データの各レコードに入力レコードＩＤのタグを付けさせると共に、テストプログラムを実行させた非分散処理環境及び分散処理環境から受け取った想定出力データ及び実出力データに付与したタグを用いて想定出力データと実出力データが同一か否かの突合せを行わせることによって、並列処理や並行処理による順不同の処理によるデータの異同を排除した比較処理を実現することができ、例えば、並列分散処理プログラムのソフトウェアテストの支援、データベース移行処理を行う際の移行前と以降後のデータが同じデータであるかを検証する作業への活用、データのバックアップを取る際に、バックアップしたデータの整合性確認に活用することができる。
【００３１】
また、前記実施形態においてはＭａｐＲｅｄｕｃｅフレームワークで作成されたソフトウェアをテスト対象とする例を説明したが、本発明によるデータ比較方法を実現するデータ比較システムは、ＭａｐＲｅｄｕｃｅフレームワークで作成されたソフトウェアのみをテスト対象とするものではなく、分散処理することを想定されたソフトウェアをテストすることができる。
【符号の説明】
【００３２】
１１０  計算機システム、１２０  入出力制御サブシステム、１２１  入力部、
１２２  表示部、１３０  データ突合せ処理サブシステム、
１３１  入力データタグ付け部、１３２  想定出力データ生成部、
１３３  実出力データ生成部、１３４  出力データ突合せ部、
１４０  非分散処理環境、１４１  非分散処理サーバ、
１４２  非分散処理プログラム実行部、１４３  タグ付与部、
１４４  非分散データストア、１５０  分散処理環境、１５１  分散処理サーバ、
１５３  分散処理プログラム実行部、１５４  タグ付与部、
１５５  分散データストア、１００１  想定出力データ、１００２  実出力データ、
１００３  不正レコードリスト、１１０１  結果表示画面、
１１０２  不正レコード一覧、１２０１  想定出力データ、１２０２  実出力データ
【図１】
2015018403.tif 000003
【図２】
2015018403.tif 000004
【図３】
2015018403.tif 000005
【図４】
2015018403.tif 000006
【図５】
2015018403.tif 000007
【図６】
2015018403.tif 000008
【図７】
2015018403.tif 000009
【図８】
2015018403.tif 000010
【図９】
2015018403.tif 000011
【図１０】
2015018403.tif 000012
【図１１】
2015018403.tif 000013
【図１２】
2015018403.tif 000014