浅析报表的测试
一、了解需求
1.筛选查询的时间区间,最大多久范围的?无时间范围,近1年、近半年;
2.筛选时间的最小纬度?1天、周、月、季度等;
二、了解开发的实现方式
1.通过快照保存各天的数据,某条数据,操作后,有变动后,更新快照里面的数据;(此时,测试过程中要将不同方式操作,状态的变更都测试到)
2.通过数据库实时查询;(因为之前已经将功能变更都测试过了,所以这个测试着重看数据查询的是否正确);
三、测试
1.页面权限?数据权限?
1.有些可以通过页面直接查询的,直接通过页面查询;(用户也是通过页面查询的,这是最有效复现bug的过程)
2.不可以通过页面直接查询的;
a.如查询通话状态,页面无筛选查询项,但列表有展示该字段;
可以通过python对响应数据,简单处理一下,再进行统计;【大致步骤:将查询区间的所有响应结果(如查询出200条,那么记得把分页改成200),保存在.txt文件,读取txt文件,解析成python对象,后续就是对字典、列表的处理了,YYDS】
注意:若是默认分页最大只有150,1.可以请前端帮忙改成200 ;2.charels 打断点 修改请求参数;3.通过接口请求查询;
b.线索tab,列表返回某字段;想要查询某时间区间线索的所有通话次数;
方式1:需要点击某线索-详情,才可以查看该条线索的通话次数;
方式2:通过通话记录tab,筛选查询,查出某条线索的通话次数;
方式1&2,只能单条线索查询,此时咱们可以python多线索列表、通话记录列表的响应结果,进行处理,算出响应的值;
3.对于有些页面操作,过于繁琐,需要请求的接口太多的,咱们可以通过数据库查询;
数据库的操作,基本都是多表查询了;
1.如线索可多次跟进,首次跟进间隔时长? mysql 分组排序,取每组的第1条;
假如多条数据,第1条是需要的数据,若是不是;那么还需要先排序,再分组;
select * from (select * from a order by a.time desc)t group by t.id;
2.线索分配时长;2h,2-12h,12h以上;数据库的某个字段,不同条件时,
case when 条件 then 值 else ‘其它’ end as 字段名称;
when 后面是一个逻辑表达式,若表达式为真,则展示then 值;
3.比较时间之差;【注意:百度搜索到的结果,多种方法的,某种方法查询结果不正确的,我们先尝试更换方法】
select time_to_sec(timediff('2022-02-18 10:06:00', '2022-01-25 10:49:00')); #时间太大,算的有问题;
select timestampdiff(second, '2022-01-25 10:49:00','2022-02-18 10:06:00');
select unix_timestamp('2022-02-18 10:06:00')-unix_timestamp( '2022-01-25 10:49:00');
4.mysql 聚合函数
max,min,count,sum,avg;
注意:count(1)执行要比count(主键id)快一些;
count(*)
、count(主键id)
和 count(1)
都表示返回满足条件的结果集的总行数;而count(字段)
则表示返回满足条件的数据行里面,参数“字段”
不为 NULL
的总个数
https://www.cnblogs.com/String-song/p/16035718.html
http://t.zoukankan.com/richered-p-8490776.html