我正在从我们的自动化测试生成的 XML 中聚合,我在 lambda 函数中使用 python 来解析 XML 并创建一个 dynamoDB 项目。
最后,我需要每次测试的日期和测试持续时间,并将计算一些基本统计数据,例如均值、标准差等。
目前,我使用的是非常扁平的结构:
{
"testName": string
"result": "SUCCESS",
"testEndedAt": timecode,
"testStartedAt": timecode,
"testRunID": string,
"timeAdded": time,
"totalTime": number
}
每次测试运行都会生成一个具有相同测试名称的新项目。
我使用 testName 和 testrunID 作为主键和排序键。
我有一种感觉,我做某事的方式效率低下。我正在考虑转向这样的数据结构:
{
testname:string,
tests:[
{
timeAdded:timeStamp
testRunId:string,
testStartedAt:number,
testEndedAt:number,
totalTime:number
}
{
timeAdded:timeStamp
testRunId:string,
m__testStartedAt:number,
m__testEndedAt:number,
totalTime:number
}
],
stats:{
mean:number
stDev:number
maxExpectedTime:number
}
}
我看到了这种方法的几个优点。
我将计算出的统计信息存储在表中我可以使用测试名称和唯一键我不必扫描整个数据库来计算统计信息等
对此几乎没有经验,我不知道如何最好地解决这个问题,更不用说回答了。
谢谢您的帮助!
您可以继续使用原始结构:
{
"testName": string
"result": "SUCCESS",
"testEndedAt": timecode,
"testStartedAt": timecode,
"testRunID": string,
"timeAdded": time,
"totalTime": number
}
通过这种方式,您可以轻松查询(而不是扫描)特定 testName 的结果。您可以对结果数据进行聚合操作,并将其保存回具有不同 GSI 的同一个表中。(分区键为 testName)。
{
"testName": string
"mean": "number",
"stDev": number,
"maxExpectedTime": number
}
如果您希望这些聚合统计数据实时启用并将此表的流发送到 lambda 函数。根据传入的新数据增加这些计数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句