这次的任务是测试监控平台的统计分析功能。
平台特点: 数据量大,数据存储采用了大数据技术(druid和Hbase),统计分析的纬度多
之前的方法:从线上随机拉取一些数据到测试环境,直接验证功能
优点:省时省力,数据相对真实
缺点:没法判断统计结果是否正确。
如发现有疑问的点,很难定位问题。
数据准备的思路:
验证结果
其实上面的思路与传统功能测试无异,同样是构建系统的输入和输出,判断他是否符合预期。第一步列测试点,这里就不详述了,下面主要介绍下数据相关的部分。
下图是以http错误统计为例,由于需求中图表会显示Top5的错误率,所以准备了6个域名及域名下不同的url。每个url对应不同的ip地址。最后的数据表示显示几条数据。
之后,把设计好的数据按固定格式写入csv文件,再用java代码实现读取文件内容,并按接口要求插入数据
String dirPath = ApmMockTestData.class.getResource("/").getPath();
String file = dirPath + "/mock_request.csv";
CSVFile csvFile = new CSVFile(file);
String line = null;
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
headers.put("X-MAM-ProductKey", appId);
long time = System.currentTimeMillis();
//第一行为标题,可忽略
line = csvFile.readLine();
JSONArray jsonArray = new JSONArray();
while ((line = csvFile.readLine()) != null) {
String[] cells = line.split(",");
if (cells == null || cells.length == 0 || cells[0] == null || cells[0].equals("")) {
continue;
}
long requestStartTime = time - Integer.valueOf(cells[2]) * MINUTE;
long requestEndTime = requestStartTime + Integer.valueOf(cells[3]);
JSONObject jsonObject = new JSONObject();
List<String> ips = new ArrayList<String>();
ips.add(cells[1]);
jsonObject.put("a", cells[0]); //url
jsonObject.put("b", ips); //ip
}
if (jsonArray.size() != 0) {
HttpEngine.doPost(collectorServer, jsonArray.toJSONString(), headers);
}
数据插入后,可以直接在平台上通过查看,判断统计结果是否与预期一致。
自己设计数据
优点:有针对性的数据能快速验证功能。 发现问题能准确定位
缺点:设计和准备数据耗时较多,且存在边界条件覆盖不全面问题。
后续待改进的点是数据插入后的验证部分,可直接采用代码实现自动验证。
本文来自网易实践者社区,经作者施红授权发布。