正式从PHP开发转到测试岗位已有1年半,中间的职业发展与所思所考应该有1个阶段的总结,总结将在下一篇完成。今天就先通过在工作中实际用到的python脚本+复杂sql记录一下自己在测试过程中做的数据验证。

测试中经常会遇到一些数据报表,数据统计的分析,这部分的测试重点在于数据统计的正确性,如何验证数据的正确性,操作中大概分为以下几个阶段:

  1. 初级阶段:了解需求,手动准备数据。根据需求手动生成一部分数据,记录生成数据的控制条件,验证不同条件下生成的数据是否与数据统计一致。
  2. 中级阶段:使用大量数据做数据验证。初级阶段的数据量太少,很多隐藏问题往往不容易发现,需要大量数据时,手动准备数据是不现实的,这时候应该向研发人员了解数据生成逻辑,使用python脚本伪造大量数据,最后SQL进行数据统计对比研发测数据统计的正确性。

初级阶段,是每个测试人员的必备功课,也是测试人员测试过程中的主要工作,只要需求理解到位,就可以完成。中级阶段需要一些python编程基础及SQL编写能力。数据统计分析中,各种条件控制下的统计往往需要测试人员有编写复杂SQL语句的能力。

python脚本生成大量数据,不仅需要了解需求也需要了解具体的表结构,才能为后续SQL编写查询做好基础准备工作。这主要涉及编程能力,由于本人是开发转测试,所以目前脚本都是在随用随学随写,基本就是接口调用,数据库连接,数据的增删改查工作,后续做数据统计分析也可以结合使用ECharts图表,但是仅是为了做数据的验证,再做页面的图表展示实在没有必要,所以一条SQL往往能解决很多问题。

虽然测试的方法千千万,内卷也是日益严重,但是验收交付中反馈的问题越少,才越能体现出一个测试人员的真实水平,靠谱是第一位的。

编写SQL中总结一下个人常用到的一些函数及方法,这里以MySQL为例:

  • GROUP BY 不对值为NULL的分组

下面是对一个新老客的数据分析,表中uid=null的为新客,后续相同uid记录数=1的标识为新客,相同uid记录数>1的标识为老客。如果只是通过GROUP BY uid,就会将所有uid=null的记录分为一组,这时uid=null的记录会被标记为老客,与需求不符。

有些博主会使用GROUP BY IFNULL(uid, UUID()),我实际运行了一下发现此种场景下UUID()生成的值相等,依然不符合需求统计,不知道是不是我的用法有误,有知道的大神可以给与指点。

SELECT Id,uid,
CASE WHEN COUNT(Id)=1 THEN 'new'
WHEN COUNT(Id)>1 THEN 'old'
END `status`
FROM table_name
WHERE DATE_FORMAT(create_date,'%Y-%m-%d')='2022-04-19' -- 时间格式的控制
GROUP BY IFNULL(uid,Id)) --有些博主使用IFNULL(uid,UUID())),但在实际应用中我发现这样使用UUID()生成的值是相同的,依然不能满足需求判断
  • 根据不同条件对数据进行整合

下面是根据素材类型,统计素材的展示时长。图片类型默认展示5s,视频素材根据素材的时长进行数据统计。不同的数据拥有不同的素材类型,需要统计所有数据下素材的展示时长。

select SUM(
IF(SUBSTRING_INDEX(dsm.material_mime,'/',1)='image',dap.count*5,
(IF(SUBSTRING_INDEX(dsm.material_mime,'/',1)='video',dap.count*dsm.show_time,0))
)) from table_name1 dap
inner join table_name2 dsm on dsm.schedule_id = dap.schedule_id
where dap.ad_position IN('free1','free2','free3','free4')
AND dap.opt_time between '2021-12-01 00:00:00' and '2021-12-01 23:59:59' 

测试中的数据统计分析的验证:python脚本+复杂SQL总结相关推荐

  1. SQL Server中数据透视表的Python脚本

    This article talks about Python scripts for creating pivot tables in multiple ways. 本文讨论了以多种方式创建数据透视 ...

  2. java代码转置sql数据_SQL Server中的数据科学:数据分析和转换–使用SQL透视和转置

    java代码转置sql数据 In data science, understanding and preparing data is critical, such as the use of the ...

  3. python向mysql中添加数据标签_用python在MySQL中写入数据和添加数据

    在笔者之前的博文中,已介绍了用python连接与mysql数据库的知识.包括如何安装python连接mysql的pymysql包,如何通过cusor语句将python与mysql连接起来,以及如何用p ...

  4. java如何保存初始化数据_java – 如何在JUnit测试中初始化数据

    我的任务是为服务层编写压力(负载)测试.主要是CRUD操作.我们使用JUnit作为测试框架,使用JUnitPerf构建负载测试,使用 Spring注入服务bean,使用hibernate访问数据库. ...

  5. 把一个数组(列表)中的数据逆向反转,python

    一个简单的功能,把一个数组的全部数据反向(逆向)反转,比如,现在数组中的数据顺序为: [1,2,3,4,5],要求把数组中数据全部反转为[5,4,3,2,1] python实现 : def app() ...

  6. 从FASTA文件中批量提取指定序列【Python脚本】

    文章目录 前言 一:读取含特定字符的序列并输出 演示 二:读到某一个字符之前的全部输出 使用方法 三:输出前n条序列 使用方法 总结 前言 背景:学测序流程的时候,做到mapping的时牛的基因组有两 ...

  7. c 将mysql表数据打印,c 中数据库数据如何导出至excel表格-用sql语句把一个数据库内的表保存成excel表格??...

    如何用JAVA将数据库中的数据导入到excel表格 1.C语言产生ASCII数据文件,使用空格做作为数据分隔符. 2入Excel,选择数据选项卡 / 获部数据工具组 / 自文本按钮 3.进入数据导入框 ...

  8. 清除python shell中的内容_如何使用python脚本定时清空文件内容?

    我们一直在对大家强调关于python脚本的使用,但是有部分同学提出疑问,就是关于上期跟大家说的shell脚本没有实质性的使用效果,如果在实际应用里,要怎么使用这个脚本,它又能实现什么效果,其实针对这个 ...

  9. android调用python框架_在Java中从Android应用程序执行Python脚本?

    我正试图找到一种在Android中从Java代码执行Python脚本的方法.我对这个问题做了一个研究,但我发现的唯一问题是,如何在APK for android(Kivy e.t.c.)中转换pyth ...

最新文章

  1. android layout 对齐,安卓利用TableLayout实现控件列对齐
  2. Python函数作为参数传递给函数
  3. 深入理解JVM(一)编译openJDK
  4. python networkx进行最短路径分析_NetworkX vs Scipy所有最短路径算法
  5. Linux 重新挂载分区的方法
  6. [Java基础]Date类基础
  7. Part5 数据的共享与保护 5.4类的友元5.5共享数据的保护
  8. 互动留言赠书:《Oracle高性能系统实战大全》
  9. jquery实现图片放大效果
  10. 10句编程箴言 每个程序员都应该知道
  11. python调用yolov3模型,pytorch版yolov3训练自己的数据(数据,代码,预训练模型下载链接)...
  12. crontab——Linux 下的定时任务
  13. PHP中的的一个挺好用的函数 array_chunk
  14. java毕业答辩会问什么,java毕业设计答辩(详细流程介绍)
  15. gerrit常见问题及解决方法
  16. excel拆分工具怎么拆分表格?
  17. ❤️ 6个Python办公黑科技,工作效率提升100倍!HR小姐姐都馋哭了(附代码)❤️
  18. C语言——数组指针篇
  19. LinuxZIP压缩和解压缩
  20. 如何搭建真正能洞悉数据的领导驾驶舱

热门文章

  1. 白嫖项目基于ssm房屋租赁系统源码【开源项目】
  2. 大学英语计算机my dream 150,大学英语作文范文(全)
  3. pandas过滤数据
  4. 怎么准备年终总结谈话
  5. 如何发动DDoS 攻击
  6. 为什么L1正则化会有稀疏性?为什么L1正则化能进行内置特征选择?
  7. html怎么做进度条圆形,用css3实现圆形进度条
  8. javafx逻辑实现五子棋基本功能(悔棋,重新开始,保存棋谱,复盘,人人对战,单机模式
  9. 前端是怎么做权限控制的?
  10. javascript的冒泡与捕获、定时器