更新:我在尋找一種技術來計算的數據爲我的算法(或爲此事任意算法)的所有邊緣案件。
什麼我嘗試到目前爲止只是在想什麼可能是邊緣情況+產生一些「隨機」數據,但我不知道我怎麼能更確定我沒有錯過的東西真正的用戶將能夠搞亂..如何生成測試數據的「組通過數據的其它行」算法
我想檢查我沒有錯過一些重要的事情在我的算法,我不知道如何生成測試數據,以涵蓋所有可能的情況:
的任務是報告每個Event_Date
的數據快照,但爲可能屬於的下一個Event_Date
- 見第2組)對輸入和輸出數據說明:
我算法:
- 使
event_date
個列表和計算next_event_date
對於他們 - 將結果加入
main_audit_table
並計算每個快照的最大transaction_id
(我的illustra中的組1-4薦) - 由id
,event_date
以及基於transaction_date < next_event_date
是否是真實的2個選擇或不 - 細分電子郵件加入
main_audit_table
的結果從同一transaction_id
- 得到其他數據一起
costs_audit_table
的結果 - 使用最大transaction_id
即小於transaction_id
從結果
我問題(S):
- 如何生成可覆蓋所有可能場景的測試數據,因此我知道我的算法是正確的?
- 你可以在我的算法邏輯中看到任何錯誤嗎?
- 有沒有更好的論壇來處理這類問題?
我代碼(即需要進行測試):
select
snapshots.id,
snapshots.event_date,
main.event,
main.transaction_date as last_change,
costs.costs as costs_2012
from (
--snapshots that return correct transaction ids grouped by event_date
select
main_grp.id,
main_grp.event_date,
max(main_grp.transaction_id) main_transaction_id,
max(costs_grp.transaction_id) costs_transaction_id
from main_audit_table main_grp
join (
--list of all event_dates and their next_event_dates
select
id,
event_date,
coalesce(lead(event_date) over (partition by id order by event_date),
'1.1.2099') next_event_date
from main_audit_table
group by main_grp.id, main_grp.event_date
) list on list.id = main_grp.id and list.event_date = main_grp.event_date
left join costs_audit_table costs_grp
on costs_grp.id = main_grp.id and
costs_grp.year = 2012 and
costs_grp.transaction_id <= main_grp.transaction_id
group by
main_grp.id,
main_grp.event_date,
case when main_grp.transaction_date < list.next_event_date
then 1
else 0 end
) snapshots
join main_audit_table main
on main.id = snapshots.id and
main.transaction_id = snapshots.main_transaction_id
left join costs_audit_table costs
on costs.id = snapshots.id and
costs.transaction_id = snapshots.costs_transaction_id
您能否澄清這些數據是如何建模的以及您如何設法分配這些組? – Kodra 2012-04-24 20:55:33
@Kodra模型 - 它們是* IBM Tivoli Service Request Manager *審計表(具有幾十個自定義字段的a_workorder)+自定義審計表 - 無最新文檔和我的逆向工程技能與您的一樣好。 。 – Aprillion 2012-04-24 22:20:08
@Kodra我的算法的第2點應該清楚地分配組的作業 - 如果沒有,請告訴我究竟什麼不清楚,所以我可以重新修改它,謝謝 – Aprillion 2012-04-24 22:21:34