数据科学测试 1:为什么要测试?

数据科学测试简介

测试是任何数据科学家都需要学习的重要技能之一。

根据我的经验,为代码添加测试是在整体时间节省方面最有价值的投资。

在这一系列的博客文章中,我们将介绍当今在Python中进行代码测试的最重要理念。

这篇博客文章首先探讨了测试的好处,为什么你应该在不同规模上编写测试,以及为什么你应该使用自动化测试框架。

测试的好处

    • 测试可以快速发现错误,并减少你花在调试上的时间

    • 测试可以加速你的学习过程——如果你能够将自己的想法迭代10倍的速度,那么你就能更快地学习到哪些可行,哪些不可行

    • 测试作为文档——每个测试都展示了你的每个函数或流程预期的输入和输出。因为是测试,你还可以检查这些文档是否是最新的

    • 测试允许你修改复杂的代码库。编写复杂的代码是容易的。但是修改——更不用说进一步开发复杂的代码——要更具挑战性。测试允许你检查在更改一个部分时是否破坏了其他部分。

    • 最后一个好处稍微有些不同:通过大量的测试会让人感觉很好!在编写代码时,我们常常陷入不确定和疑虑的境地。通过测试可以提醒你至少有些东西是有效的,并帮助你获得一种流畅感!

克服中间阶段的低谷期

通常,一旦程序员能够编写复杂的代码,他们的学习速度就会减慢。初学者会很快遇到新的错误    ——因此学习得更快。而对于复杂的代码,可能需要几分钟(甚至几个小时!)才能遇到新的错误——这大大降低了程序员的学习速度。我称之为“中间低谷”。当这些中级程序员开始编写测试时,他们就能快速发现代码中的错误,因此学习过程再次加速。

在不同规模上进行测试

代码库可以在许多不同规模上工作,从一个单独的函数到由许多函数组成的管道。你的测试也必须在这些不同的规模上进行:一些测试将测试单个函数的输出,而其他测试将测试许多函数串联在一起的输出。

用于描述测试的术语并不总是一致的,但通常,针对单个函数的细粒度测试被称为单元测试,而针对管道的粗粒度测试被称为功能测试、端到端测试或集成测试。

一般来说,单元测试更容易编写,但功能测试是最有用的,因为你主要关心的是管道的输出。

何时停止编写测试

在纯粹的测试驱动开发(TDD)方法中,目标是实现100%的测试覆盖率——也就是说,你要为你的每个函数都编写测试。然而,我发现这个目标对很多人来说是非常令人望而生畏的。好消息是,一般来说,并不需要达到100%的测试覆盖率。

你的目标是让你的测试产生价值。对于大多数人来说,从0%到10%的测试覆盖率就能产生最大的价值,特别是当你首先针对你的流程中最容易出现故障的部分进行测试时。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Step-DPO 论文——数学大语言模型理解

论文题目:STEP-DPO: STEP-WISE PREFERENCE OPTIMIZATION FOR LONG-CHAIN REASONING OF LLMS 翻译为中文就是:“LLMs长链推理的逐步偏好优化” 论文由港中文贾佳亚团队推出,基于推理步骤的大模型优化策略,能够像老师教学生一样优…

String 和StringBuilder字符串操作快慢的举例比较

System.currentTimeMillis(); //当前时间与1970年1月1日午夜UTC之间的毫秒差。public class HelloWorld {public static void main(String[] args) {String s1 "";StringBuilder s2 new StringBuilder("");long time System.currentTimeMillis();long s…

git命令学习分享

分布式版本控制系统,本地仓库和远程仓库相互独立。 使用repository仓库进行控制,可以对里面的文件进行跟踪,复原。 git config --global --list:查看git配置列表 cd ** :进入** cd .. :退回上一级 echo…

AI Agent项目探索与实践记录

AI Agent项目探索与实践记录 1. 概述2. 总体结构2.1 记忆模块2.2 模型服务模块2.2.1 LLM服务2.2.2 retrieval服务2.2.3 rerank服务 2.3 Agent系统2.3.1 Planner2.3.2 Code/SQL Generator2.3.3 Code Executor2.3.4 Responser2.3.5 Round Compressor2.3.6 New Turn Discriminator…

基于Llama Index构建RAG应用(Datawhale AI 夏令营)

前言 Hello,大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者,本文参与活动是2024 DataWhale AI夏令营;😲 在本文中作者将通过: Gradio、Streamlit和LlamaIndex介绍 LlamaIndex 构…

linux文本查看命令

在Linux中,查找文件通常使用几个不同的命令,具体取决于你的需求和上下文。以下是一些最常用的命令: find 命令: find 是最强大和灵活的命令之一,用于在目录树中搜索文件,并执行对找到的文件执行指定的操作…

全局 loading

好久不见! 做项目中一直想用一个统一的 loading 状态控制全部的接口加载,但是一直不知道怎么处理,最近脑子突然灵光了一下想到了一个办法。 首先设置一个全局的 loading 状态,优先想到的就是 Pinia 然后因为页面会有很多接口会…

数据结构——栈(链式结构)

一、栈的链式存储结构 如果一个栈存在频繁进栈和出栈操作,可以考虑链式结构。 栈的链式存储结构是指使用链表来实现栈这种数据结构。在链式存储结构中,栈的每个元素被封装成一个节点,节点之间通过指针相连,形成一个链表。栈顶元…

Linux下开放指定端口

比如需要开放82端口: #查询是否开通 firewall-cmd --query-port82/tcp#开放端口82 firewall-cmd --zonepublic --add-port82/tcp --permanent#重新加载防火墙 firewall-cmd --reload

java学习--代码块

package com.block.test01; class Main{public static void main(String[] args) {Block block new Block("你好,李焕英");new Block("你好",12,24);} } public class Block {String name;int begin_time;int end_time; //如果在调用构造器时都…

华盈生物-20K人类蛋白组芯片的超凡应用:揭秘蛋白质的神奇世界

各位科研小伙伴们,欢迎再次来到我们的科学探险之旅!今天,我们要深入探讨一项超级实用的科研工具——20K人类蛋白组芯片。通过这款芯片,你可以揭开蛋白质世界的神秘面纱,探索各种有趣的应用方向。准备好了吗&#xff1f…

在python中使用正则表达式

正则表达式是什么?就是要寻找的数据的规律,使用正则表达式的步骤有三 第一,寻找规律,第二使用正则符号表示规律,第三,提取信息 看下面的代码 import re wenzhang (小草偷偷地从土里钻出来,嫩…

Leetcode 3228. Maximum Number of Operations to Move Ones to the End

Leetcode 3228. Maximum Number of Operations to Move Ones to the End 1. 解题思路2. 代码实现 题目链接:3228. Maximum Number of Operations to Move Ones to the End 1. 解题思路 这一题不难分析得到,要获得最多的操作次数,只需要从左…

数据结构---散列表(哈希表)

什么是哈希表 1、哈希表(Hash Table):也叫做散列表。是根据关键码值(Key Value)直接进行访问的数据结构。 2、哈希表通过「键 key 」和「映射函数 Hash(key) 」计算出对应的「值 value」,把关键码值映射到…

SwiftUI 5.0(iOS 17)滚动视图的滚动目标行为(Target Behavior)解惑和实战

概览 在 SwiftUI 的开发过程中我们常说:“屏幕不够,滚动来凑”。可见滚动视图对于超长内容的呈现有着多么秉轴持钧的重要作用。 这不,从 SwiftUI 5.0(iOS 17)开始苹果又为滚动视图增加了全新的功能。但是官方的示例可…

【Node.js】调试 Node.js 程序

调试 Node.js 程序可以使⽤以下⽅法: console.log():使⽤ console.log() 打印变量或者调试信息,可以在控制台中查看输出的结果。debugger:在代码中使⽤ debugger 命令设置断点,当程序执⾏到该点时会暂停,可…

Linux----Mplayer音视频库的移植

想要播放视频音乐就得移植相关库到板子上 Mplayer移植需要依赖以下源文件:(从官网获取或者网上) 1、zlib-1.2.3.tar.gz :通用的内存空间的压缩库。 2、libpng-1.2.57.tar.gz :png格式图片的压缩或解压库 3、Jpegsrc.v9b.tar.gz : jpeg格式图片的压…

Unity3D 如何自动点击UIElement.Button类型的按钮详解

前言 在Unity3D开发中,自动点击UI界面上的按钮是一个常见的需求,特别是在自动化测试、演示脚本或游戏AI控制等场景中。Unity的UI系统(UGUI)提供了灵活的接口来实现这一功能。下面将详细介绍如何在Unity中自动点击UIElement.Butto…

数据结构day3

一、思维导图 二、顺序表实现学生管理系统 //头文件 #ifndef TEST_H #define TEST_H #define MAX_SIZE 100//定义学生类型 typedef struct {char name[20]; //姓名int age; //年龄double score; //分数 }datatype;//定义班级类型 typedef struct {datatype student[MAX…

CDGA数据治理:突破卡点堵点,解决确权难、流通交易难问题

随着大数据时代的来临,数据已成为推动社会进步和经济发展的重要力量。然而,数据治理中的卡点堵点问题,特别是确权难、流通交易难,正成为制约数据要素市场健康发展的瓶颈。本文将探讨这些问题,并提出相应的解决方案。 确…