0

运行软件

runID   Release
1   X
2   X
3   Y
4   Z
5   Y
6   X
7   Y
8   Z
9   X
10  Z

testcase        

testID  runID   Result
T_1          1  PASS
T_2          1  FAIL
T_3          1  PASS
T_4          2  PASS
T_5          2  FAIL
T_6          3  PASS
T_7          4  FAIL
T_8          3  PASS
T_9          3  FAIL
T_10         5  PASS
T_11         5  FAIL
T_12         3  PASS

1) 从 run_software 表中我们可以了解 X 软件在 runID 上运行1, 2,6,9

2) 取runID - 1 来到testcase 表。这里我们有 7 个 testID,runID 为 1。从这 7 个 testID 中,我们需要使用 group by Result 和 runID 来测量 TC 计数和 PASS/FAIL 百分比。

目标:最终目标是通过考虑最大测试用例数来找到最新的 3 个版本及其具有通过百分比的 runID。

例如。如果在 runID 的 1、2、3、4 上分别执行 10、12、9、21 个测试用例的“X”发布,我们应该考虑发布“X”的 runID 4 来衡量“通过百分比”

期望输出:

considering PASS% is > 60
Release runID   Result  PASS %
X   1   PASS    66.66
Y   3   PASS    75
Z   4   FAIL    0

要理解

Release 'X' has runID's - 1, 2 , 6, 9 with 3, 2, 0 , 0 TestID's respecively
    Hence, X finalized runID '1' with 66.66 as PASS% (2 PASS & 1 FAIL)
4

1 回答 1

0

你的问题实际上不是很清楚,但我猜应该是这样的:

SELECT r.Release, r.runID, (CASE WHEN subq.PassPerc >= 60 THEN 'PASS' ELSE 'FAIL' END) AS Result, subq.PASSPerc 
    FROM run_software AS r 
        INNER JOIN (SELECT p.runID, (100 * p.passed / t.total) AS PASSPerc 
            FROM (SELECT runID, COUNT(*) AS passed FROM testcase WHERE Result = 'PASS' GROUP BY runID) AS p
            INNER JOIN (SELECT runID, COUNT(*) AS total FROM testcase GROUP BY runID) AS t ON t.runID = p.runID 
            GROUP BY p.runID, p.passed, t.total) AS subq
        ON subq.runID = r.runID 
    GROUP BY r.Release, r.runID, subq.PASSPerc
于 2013-07-12T08:20:49.620 回答