确定测试矩阵结果的有效方法

时间:2012-10-30 13:09:13

标签: php validation matrix implementation

相关问题:

我有25个验证,每个验证返回一个布尔值(true表示传递,false表示失败)。

每个验证都可以与所有其他验证结合使用,形成验证测试组合矩阵。

子集验证的特定组合也将具有通过/失败规则。

这是一个简短的例子:

    V1 | V2 | V3 | V4 | V5
M1:  T |  T |  T |  T |  T   <-- For this Matrix row it would PASS
M2:  F |  T |  T |  F |  T   <-- For this Matrix row it would FAIL  
M3:  F |  F |  T |  T |  T   <-- For this Matrix row it would PASS
M4:  T |  F |  F |  F |  F   <-- For this Matrix row it would PASS
M5:  T |  T |  F |  F |  F   <-- For this Matrix row it would FAIL

我只关心垂直对于值的水平验证测试

我知道所有测试并将每个测试的结果存储在数据库中。 我知道所有验证测试子集的所有组合矩阵。

我的问题是:

运行Matrix的最佳方法是什么?

我是否存储每次通过或失败测试的每个排列以进行Matrix验证? 然后我在哪里存储Matrix组合?

我认为这样做的唯一方法是存储25个测试的所有验证组合(是的625个条目)并添加我期望在同一记录中进行验证的Matrix结果。

像这样的东西

    V1 | V2 | V3 | V4 | V5 | MR ( Matrix Results )
M1:  T |  T |  T |  T |  T | P   <-- For this Matrix row it would PASS
M2:  F |  T |  T |  F |  T | F   <-- For this Matrix row it would FAIL  
M3:  F |  F |  T |  T |  T | P   <-- For this Matrix row it would PASS
M4:  T |  F |  F |  F |  F | P   <-- For this Matrix row it would PASS
M5:  T |  T |  F |  F |  F | F   <-- For this Matrix row it would FAIL

我觉得可能有一个我没有看到的更优化的解决方案,任何想法?

1 个答案:

答案 0 :(得分:1)

这是我做的方式。首先在数组中定义矩阵映射:

$map = array( 'TTTTT' => TRUE, 'FTTFT' => FALSE, 'FFTTT' => TRUE );

显然,该数组中会有更多元素,但你明白了。我不知道你的表/列名,但是下一个CONCAT v1-v5并作为一个字符串拉。然后,只需在地图数组中找到该键:

$sql = "SELECT CONCAT(v1,v2,v3,v4,v5) AS matrix FROM `validation` WHERE `user`= '$user'";
$result = $mysqli->query( $sql );
$user_matrix = array();
while( $row = $result->fetch_assoc() ) $user_matrix[] = $map[ $row['matrix'] ];

现在您在$ user_matrix数组中有结果