SQLのselect文が副問い合わせやテーブル結合などの処理をしており、単体テストのテストデータを作ることに多くの時間を要します。
そのため、select文から自動でデータをテーブルに挿入してくれるよう自動化を行いたいのですが、可能でしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
SELECT文の側から入っているべきデータの中身を判断することは不可能です。
使えるものがあるとしたら、SQLではなくスキーマの情報を取り込んでデータを自動生成するようなツールではないでしょうか。情報スキーマを参照して自分でそのようなツールを作ることも可能です。
テストエース
EasyDataMaker
Open Source Test Data Generators
それでも、テストに必要なデータを作るには自身がテストケースを理解したうえで、データの生成条件等を指定する必要があるかと思います。
投稿2017/07/08 06:39
編集2017/07/08 06:56総合スコア1149
0
INSERT ... SELECT 文 を作れるなら可能ですが、まっとうなテストデータを作るのは相当な経験と技術を必要とします。
日本は伝統的にテストエンジニアの地位が低いですから、有能な人材をテスト工程に投入するユーザーは少ないです。
掲示板では個々の状況を提示された上で、more better な方法を探す方法を手助けしてもらうのがせいぜいかな?って思います。深く突っ込んだ内容が必要ならきちんとお金を払ってそれなりの人材を雇った方が時間も費用も節約できるでしょう。
投稿2017/07/07 13:21
総合スコア16415
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
やりたいことは分かります。で、可能かどうかということですが汎用的な処理としては不可能です。
ただこの話を可能か不可能かという話でやっちゃうなら抽象的であまり生産的なアイデアって期待できないと思います。
そこで作業をもう一つ"落として"考えてみてはどうでしょうか?単純にデータを作るといってもいくつかのプロセスがあるはず。たとえばマスタの定義域から全パターンのデータをつくる、表示件数の境界値99件、100件、101件を作る等々。そのうち手間のかかるキモの部分が意外と自動化できる可能性があります。これでも十分作業は効率化するはず。完全自動化か完全手動でやるかの2択って意外と不毛な話になっちゃいます。
自分で考えるにしても、誰かに質問するにしても"手間のかかるキモの部分"に問題を落としてみると実用的で生産的なテクニックを引き出せるかもしれません。
投稿2017/07/10 12:23
総合スコア276
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
考え方だけ。
- 質問内容の確認
質問の意図としては、
『複雑なSQL文の単体テストデータを作るのが面倒なので、
インプットを 製造済のSQL文のみ で、
アウトプットを、単体テストデータを作成(あわよくばテストも)するような
プログラムを作ること(自動化)は可能かどうか。』
ということですかね。
- 回答
結論から言うと、可能でしょうね。
- 回答の根拠
実際に製造済のSQL文のみ渡されて、テストデータを作成・テストしろ。という依頼があればできますし。
”依頼をこなす上で考慮する事項を全てプログラム化”できれば、テストの自動化も含めてできるでしょう。
- 回答の注意事項・補足
ただ、インプットとなる情報が製造済のSQL文のみであることが大問題です。
バグっているSQL文をテストするためのテストデータ作成は、
バグっているSQL文が正しく動く(バグってないという判断をする)ためのデータしか作れないでしょうね。
であれば、インプットを設計書に・・・と思うかもしれませんが、
(設計書がバグっていれば)結局同じことです。
上記のような問題を解決するために、
インプットとなる情報(たとえば、正しいSQLや設計書やテーブル構成等)を増やせば、
解決できるかもしれません。
と、ちょっと考えただけでも
「考慮する事項を全てプログラム化」と言う部分には、
実際に単体テストデータを作る以上に労力がかかると思います。
あと、自動化のプログラム自体も品質を担保するために、
色々なテストしてやらねばならないので、
単体テストデータを作成するより、作業時間がかかるでしょうね。
なので、複雑なSQLがある現場ほど、
そのような自動化ツールは存在しない傾向があるような気がします。
- おまけ
費用対効果が悪くても、自動化による単体テストにこだわるような現場でしたら、
作る価値はあるかもしれません・・・
その場合、まずは単体テストデータを作るためのインプット情報
(質問者さんの現場に特化したようなインタフェース)を決めて、
しばらくは、そのインプット情報は手動で作成し、
そのインプット情報を基に自動でテストデータ作成するようなプログラムを作り、
後々、テストを自動で行うようなプログラムを作る。
という流れが良いかもしれませんね。
投稿2017/07/09 15:36
編集2017/07/09 15:39総合スコア760
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。