時間を無駄にしていませんか?
DB更新を含むプログラムの試験結果を取得する場合、以下の手順で結果確認とエビデンス作成を行う必要があります。
1.SqlPlusやDBViewerといったツールにて、更新前のテーブルデータの検索結果を取得する。
※更新対象のテーブルが複数に及ぶ場合は、必要なテーブルの数だけ取得が必要
2.試験対象のプログラムを実行する。
3.SqlPlusやDBViewerといったツールにて、更新後のテーブルデータの検索結果を取得する。
※更新対象のテーブルが複数に及ぶ場合は、必要なテーブルの数だけ取得が必要
4.1と3のテーブルデータを目視にて比較し、意図した通りの更新が行われていることを確認する。
5.DBの更新内容が正しければ、試験結果として1と3で取得した検索結果をExcelなどに添付しエビデンスを作成する。
※更新箇所が判別できるように、取得結果の特定箇所に赤枠を付けることもあります。
プロジェクトが変わっても、この作業はどの現場でも発生しています。
いや~、はっきり言って面倒です。
何の面白みもない作業です。
■テーブル情報の取得作業
上記1と3のテーブル取得にて取得SQLの作成が必要になります。
ええ、とてもやりたくない作業です。
1テーブルなら大したことはありませんが、複数テーブルになると「もう、嫌っ!!」ってなります。
しかも、動作確認中のお試し実行をしていると、意図した通りに動かなくて
「DB取得→結果確認→プログラム修正→DB取得→・・・」という繰り返し作業になります。
テーブルのデータが多い場合は、WHERE句に条件を指定して取得しなくちゃならないし、
テーブルAとテーブルBでプライマリーキーが異なる場合は、結合して取得しなくちゃならないし、
ああああ・・・とにかく面倒だ・・・
私自身もかつては、取得用のSQLをテキストファイルなどに残しておいて、
繰り返し利用したものですが、その作業自体が地味に時間が掛かったものです。
また、試験対象プログラムを実行する際に影響がある全てのテーブルを取得するSQLを選んで
Sqlplusなどで実行してテキストファイルに出力していましたが、
うっかりテーブルの取得漏れが発生するケースもありました。
そして数ヵ月後に同じプログラムを修正した際に、以前に使用した取得用のSQLを紛失していて
同じSQLをまた作ったり・・・・と、時間を無駄にすることもありました。
このテーブル取得という単調な作業を繰り返すうちに、
「ボタンをクリックするだけで、何度もDB差分比較できないものか」とよく思ったものです。
ということで、作成したものが本ソフトウェアになります。
テーブル情報を接続先DBから取得することで、取得したいテーブルにチェックを付けるだけで
簡単にテーブル情報の取得が行えます!
これでもう、単調なSQLを記述する日々とはオサラバです!
■更新部分の目視確認作業
上記4のDB差分を目視で確認する作業が非常に苦痛でした。
試験対象のプログラムはテーブルAの3カラムを更新するだけだが、
デグレが発生していないかという観点では、テーブルAの他のカラムは
変更されていないことを確認する必要があります。
仮にテーブルAのカラムが20カラムあると、17カラムは変更なしで
3カラムが意図した変更であることを確認する必要があります。
もし、同様のテーブルが3つだと仮定したら、
51カラムは変更なしで9カラムが意図した変更であることを確認・・・!?
正気の沙汰ではないです。
病気になっちゃいますよ。
この病的な作業を繰り返すうちに、
「パッと見て、変更有無が判別できて、変更箇所も前後がすぐに確認できないものか」とよく思ったものです。
ということで、作成したのが本ソフトウェアになります。
DB差分情報はExcel形式で出力され、差分箇所は色が付くのでパッと見て判別できます!
変更前後の値もセルあるいはコメントとして出力できるので、Excelの1シートで変更内容が簡単に確認できます!
これでもう、病気になる不安とはオサラバです!
ヒューマンエラーはなくせません!
「更新される値が違うじゃないかっ!?本当に試験やったの!?何を確認したの!?」
といった会話を耳にすることがありますよね。
試験項目もあるし、試験実施もしました。
だけど試験結果のエビデンスを見ると、やっぱり値が間違っていたりするんですよね。
仕事を指示した側としては、「なんで見落とす!?」と思っちゃいますし、
試験を実施した側としては、「こんな物量じゃ完璧にはできんよ・・・」と言いたくなります。
1テーブルの1カラムの更新するプログラムであれば、
試験実施者が「ザルの目を持つ者」と言われても仕方ないでしょうが、
複数テーブルに対して、追加・削除・更新をあれこれするようなプログラムの場合、
確認するパターン数が100以上になるケースもあります。
仮に99%の確認精度を誇る者であっても、1件の見落としが発生してしまいます。
そして、99.9%の確認精度を誇ったとしても、1000パターンの確認をすれば
1件の見落としが発生することは覚悟すべきことなのです。
つまり、物量が多ければ、どうしても見落としは発生してしまうのです。
「ヒューマンエラーはなくせない」という現実を受け止めて、
どのように対処していくかが、取るべき唯一の策だと考えます。
そんな堅苦しい話をグチャグチャと考えているうちに、
「確認する物量自体を少しでも減らせたら良いのに・・・」とよく思ったものです。
ということで、作成したものが本ソフトウェアになります。
サマリー表示でテーブルに対しての追加・削除・変更が一目瞭然!
各カラムの変更箇所は色で判別可能で、マスタファイルを用意すれば
カラムの値を論理名で表示することもできます!
これでもう、殺人的物量に悩まされる日々ともオサラバです!
Diffでは出来ません!
現状でテーブルデータのDB差分を確認するには、テーブルデータをテキストファイルに出力して
Diffツールにて比較するという方法があります。
ええ、確かにDiffツールならばテキストファイルを比較できます。
「この方法で比較すればいいじゃん!」
よーし、更新前のテーブルをCSVファイルに出力して、
アプリケーションを動かしてから更新後のテーブルをCSVファイルに出力して・・・
「Diffツールで比較!!」
それっぽく比較できましたね!
なんだ、Diffツールで十分じゃないですか!?
「・・・・あれ・・・??」
「なんかイメージと違う・・・・」
一見、うまく比較が行えたかのように見えるのですが、
上記でIDがプライマリーキーと仮定すると、
更新前ではID「006」~「011」が存在しているが、
更新後ではID「006」~「011」が削除され、ID「016」~「021」が追加された挙動になります。
上記では、IDの値が変わったのは判別できますが、追加と削除を判別する事はできませんね。
そして恐ろしいのは、IDがプライマリーキーならば、なんとか解読はできるのですが、
プライマリーキーがIDとNAMEの2つであった場合は、
更新前ではID「005」~「011」が存在しているが、
更新後ではID「005」~「011」が削除され、ID「005」~「021」が追加された挙動になります。
つまり、プライマリーキーが何かによっても解読方法が変わってくるのです。
通常、業務で使用するテーブルには複数カラムでプライマリーキーとなります。
プライマリーキーが3つ以上になると、Diff結果を見ても追加と削除の挙動を
解釈するのは至難の業となることが容易に想像できるかと思います。
次にこちらの比較結果を見てください。
差分があることはわかります。
でも、どのカラムで差分が発生しているのか解読するのが非常に困難です。
この程度のカラム数なら、目視でもやれない事もないのですが、
カラム数が画面に収まりきらなくなると困難を極めます。
差分が数行ならば根性でやれない事も無いのですが、
差分が数百行あった場合、もはやカオスです。
やれる気が全くしません!
というか、こんな何も有益な経験を得られない作業に貴重な時間を使いたくありませんよ!!
Diffツールは素晴らしいツールだと思います。
ですが、DBのテーブルは論理的な一意となる行のルールを保持しています。
Diffツールはその一意となる情報を解析する機能はありません。
あくまでファイルの差分を比較するツールなので、プライマリーキーを意識する理由がないのです。
使い方が間違っているのです。
そんな絶望的な状況に少しでも楽をしたいと考えているうちに、
「プライマリーキーで比較できたら良いのに・・・」とよく思ったものです。
ということで、作成したものが本ソフトウェアになります。
テーブルのプライマリーキーを取得して、レコード単位での比較が行えます。
更に任意でプライマリーキーを指定する事も可能なので、
Viewや作成したSQLの結果について差分比較を行うことも可能です!
これでもう、Diffツールでは比較が出来ないと嘆く日々ともオサラバです!
時間が・・・あるっ!?
DBのテーブル比較は専用ツールを使うとこんなに便利!
専用ツールで、今までの作業時間を大幅に短縮することが可能です!
節約できた時間で、プライベートを楽しむも良し。
開発中システムの品質を上げるも良し。
今後の為に技術習得をするのも良いですね。
■簡単にテーブルデータを取得
本ツールでのデータ取得はとても簡単。
一覧に表示されたテーブル名にチェックを付けて
「エビデンス出力」ボタンをクリックするだけです!
1.取得したいテーブルを選択します。(複数テーブル指定可能)
2.テーブルデータの取得を実施します。
3.取得したテーブルのデータを確認します。
こんな簡単な手順で複数テーブルのデータ取得が行えちゃいます。
しかも、何度も取得するテーブルのパターンを「取得パターン」として保存しておけば、
上記2の手順からテーブルデータの取得を繰り返し行うことができます!
取得パターンは複数登録できるので、「ユーザ情報系テーブル取得」や
「マスタ系テーブル取得」といった、用途別の取得パターンを登録しておき、
チーム内で設定ファイルを使いまわせば、テーブルデータの取得漏れを
防ぐことも可能となります。
■簡単に試験結果を出力
本ツールでの試験結果の出力はとても簡単。
取得したエビデンスを選択して右クリックでExcel形式で出力できます!
1.テーブルデータのエビデンス
2.テーブルデータのエビデンス(差分比較)
ヒューマンエラーを防ぐ仕組み!
DBのテーブル比較は専用ツールを使うとこんなに便利!
専用ツールで、確認ミスを大幅に削減することが可能です!
節約できた時間で、プライベートを楽しむも良し。
開発中システムの品質を上げるも良し。
今後の為に技術習得をするのも良いですね。
■データ値の確認も一目瞭然
本ツールでのデータ値の確認はとても簡単。
マスタ定義ファイルを作成して、本ツールに読み込ませることで
カラムの値に対する論理名を出力することができます!
上記では、「STAUS」と「DELETE_FLAG」の論理名を表示する設定となっています。
カラム値を数字やコード値で確認しようとすると、DB仕様書などと照合して
意図した値であるかの確認が必要になりますが、
本ツールを使用すれば、論理名を出力できるので確認ミスが大幅に削減できます。
■データ差分の確認も一目瞭然
本ツールでのデータ差分の確認はとても簡単。
追加・変更・削除の行が異なる色で表示されるのでパッと見て把握できます。
変更については、変更されたカラムのみ色が変わるので
変更されなかったカラムについての確認も合わせて行うことが可能です!
なお、変更されたカラムについては、変更前の値も出力できるので
値がどのように変化したかの確認も行えます!
また、追加・変更・削除が行われたレコードはA列にキーワードが出力されるので
Excelのフィルタ機能を使用すれば、データ操作されたレコードのみを
絞り込んで確認することもできます!
Diffでは出来ない、こんな事!
DBのテーブル比較は専用ツールを使うとこんなに便利!
専用ツールなら、Diffツールでは出来ないこんな事が可能です!
節約できた時間で、プライベートを楽しむも良し。
開発中システムの品質を上げるも良し。
今後の為に技術習得をするのも良いですね。
■比較除外カラム指定で楽々比較!
本ツールでは比較するカラムを比較対象から外す事ができるので、
登録日カラムや更新日カラムといった必ず変更される値は
最初から比較せず、必要な箇所だけ比較できます。
これにより、確認する範囲を狭める事ができるので
確認作業のストレスから解放されます!
上記では、「AGE」を比較対象から外しています。
その為、「AGE」に変更があってもA列に「変更」と表示されず、
「AGE」の列にも黄色(変更)で表示されません。
■強制プライマリーキー指定で無理矢理比較!
本ツールでは比較するカラムを指定する事ができるので、
VIEWや任意のSQLの検索結果に対しても、ユニークとなるカラムが
特定可能であれば差分比較を行うことができます!
これにより、試験確認用SQLを用意すれば、効率的にデータの妥当性を確認できるので
確認作業の効率化が望めます!
上記では、「ID」と「NAME」をプライマリーキーに指定しました。
本来のプライマリーキーは「ID」なので、「ID:021」は「NAME」を変更しただけですが、
「ID:021、NAME:Change」が行追加され、「ID:021、NAME:NEW」が行削除されたと表示されます。
ツール導入によるコストメリット
「ツールを導入するっていって、タダじゃないんだし~」という声もあるでしょうが、
継続的に作業効率や信頼性の向上が見込めるツールについては
少しでも早く導入すべきであると考えます!
■時給はいくらですか?
IT業界で働く人の時給は2000円~3000円が多く、それ以上の時給の案件も存在しています。
一般的に時給の高さは能力の高さでもありますが、単純作業を手作業で行う場合は
能力の高い低いに関わらず、どうしても時間がかかってしまいます。
つまり、DBのデータ取得やデータ比較は新人がやってもベテランがやっても
取得自体に時間が掛かるし、目視自体に時間が掛かってしまうのです。
手作業に掛かる時間を削減するには、ツールを効率的に使用するのが一番簡単なのです。
■1回の作業コスト
3テーブル(各カラムは20)のデータ取得と差分比較を実施すると仮定します。
このケースで本ツールを使った場合と使わなかった場合を比べてみます。
※データ件数は100レコード、差分は10レコード、差分カラムは2箇所とする。
※検索処理自体にかかる時間は無視します。
・ツール未使用(DBViewer、WinMargeを使用)
1.DBViewerで更新前テーブルデータ取得して、CSVに出力する。(3分)
※ソート順を調整する必要があるので、SQLの記述は必要
2.試験対象プログラムを実行する。
3.DBViewerで更新後テーブルデータ取得して、CSVに出力する。(1分)
※1で画面に表示済みのため、2回目の検索は容易
4.WinMargeで1と3のCSVを比較する。(50分)
確認カラム数:3テーブル×10レコード×20カラム=600カラム
1カラムにつき5秒で確認した場合、50分必要。
※カラムの追加と削除があった場合は、正確に比較できないので上記以上の時間が必要
5.試験結果をエビデンスとして加工する。(9分)
WinMargeの比較結果を画面キャプチャーして、Excelに貼り付ける作業を想定。
試験結果の確認とエビデンス取得に63分が必要となる想定。
・ツール使用(定義ファイルは設定済み)
1.「エビデンス出力」ボタンをクリックして、更新前テーブルデータを取得する。(10秒)
2.試験対象プログラムを実行する。
3.「エビデンス出力」ボタンをクリックして、更新後テーブルデータを取得する。(10秒)
4.「Excel出力」で1と3のエビデンスを比較する。
確認カラム数:3テーブル×10レコード×2カラム=60カラム
1カラムにつき2秒で確認した場合、2分必要。
※変更カラムは色が変わるので、変更対象の2カラムのみ即時に比較できるので
確認カラム数は2カラムとし、変更カラムの位置と更新前後値の確認も
視覚的に行えるので、確認時間は2秒程度を想定。
5.試験結果はExcel出力されているので、エビデンスとして出力済み。(0分)
試験結果の確認とエビデンス取得に2分20秒が必要となる想定。
■コストメリット
本ツールを使用した場合、1回の作業だけであっても元が取れる仕組みとなっています。
これが繰り返し作業であったり、チーム全体で行った場合のコストメリットは相当な金額になります。
何よりも目視による確認ミスが発生する確率が大幅に下がるので、バグの低下に繋がります!
この機会に、是非、本ツールのご利用をご検討ください。