测试不是程序员的救命稻草

本文探讨了程序员在开发过程中如何有效减少Bug的数量。通过遵循宽进严出的原则、独立实现核心功能并进行单元测试等方法,可以显著提高软件质量。同时,合理地分解项目架构和编写清晰、有条理的代码也是至关重要的。

测试人员可能是公司专职的职员,也可能是项目经理,也可能是你的老板,你的客户,所有在产品未发布上线时使用你的产品的人,你都可以认为是测试人员,包括你自己。

 

对于程序员来说,如果不懂得测试技巧,测试人员对你很难友好。因为对一个程序来说,其中包含的可能性是你加上程序员加上用户以及上线运行数十年直到产品下线都没有全部遇到的。

这么描述一个程序,相信对于程序员、管理人员、用户,都会深有感触。几乎所有产品上线了,都会有各种问题需要解决,往后则是越来越少,越来越少。

有一张图片很说明问题:


这个图片上一个程序员开始在认真写代码,然后越来越累,越来越烦躁,最后撞死在键盘上。

这个是很多初入软件行业的程序员遇到的问题,也是某些始终无法将代码bug量降低的程序员的苦恼。无论为公司做项目还是做产品,时间长了,就会总结出一句话:项目越做越复杂,维护难度越来越大,bug始终存在,越来越难找,然后把原因归结于开发时间短,用户需求变化快,无理要求多,很少有人愿意把原因归结到自己的开发水平上。

其实,无论多复杂的项目,都要进行一个合理的架构分解,接下来写代码的人还要针对架构的逻辑进行程序逻辑上的分解,继续往下则是代码结构上的分解。所以才出现诸多的设计原则,说简单点的话,所以几乎所有编程语言都支持函数。

linux操作系统、windows操作系统,算得上最复杂的软件了吧,发展这么多年,你会发现他们的架构也是逐层分解,到核心代码里也是函数里调用函数的。

那么对于程序员来说,怎么避免bug多,解决不完,解决不掉的问题呢?

从基础到高级,我们可以做如下事情:

 

  1. 宽进严出原则:你要相信,用户输入,其它函数的输入,是有各种可能性的,但你的输出却坚决不可以有。比如一个数据库查询,显示一篇文章,从网址传过来的id号你要相信可能会是各种字符串甚至中文,那么我们可以将id进行类型判断,强制转换整数等工作,但你返回的一定要是一个数组,而不要可能是false,也可能是数组。
  2. 每次做一个功能的时候,都将核心实现独立出来,在项目外用一个小demo去实现,并经过尽量全面的覆盖测试,如果有业务数据可以拿来测试,坚决不要放过。这个技巧很重要,如果需要实现一个将信息导出到word文档,那么你最好先去实现一个根据传入参数生成一个word文档的简单程序,再进行各种测试,最后再将程序嵌入到你的代码中,而且这段程序要么是一个函数,要么是一个对象。
  3. 写代码时,封装好函数,一个函数尽量只做一件事情。如果你有一个get_info_by_id里面竟然进行了update操作,那技术主管可能会判断你为一个不合格的程序员。
  4. 写代码要有条理,尽量让你的代码能够告诉阅读代码的人逻辑原则和顺序。这就要求变量命名规范并且能代表具体含义,写逻辑判断语句的时候,也要尽量能告诉别人你的逻辑判断是为什么。比如一个很复杂的If判断,比起写一堆判断语句加注释,就不如包装成一个函数,然后用函数名告诉别人你在判断什么。举例,判断一个订单是否可付款,如果用if (status == 5 && user_id == user.id && ...),逻辑只要复杂到很难判断出来是哪种条件下可付款,就可以将逻辑写到一个函数中,函数名取为user_can_pay。
  5. 无论你觉得自己的代码经过了多么精心的设计,编写和测试,一定要让他经历公众测试,并在公测阶段和正式上线的开始时间段内对它保持高度的关注,你可以检查日志,看看是否出过问题。

最后总结一下:测试人员不是程序员的救命稻草。如果程序员写完代码就交给测试人员,很可能引起测试人员的不满,你的bug太多了。如果程序员写代码眉毛胡子一把抓,不进行分解,不进行单元测试,那么测试人员可能天天都在测你写的代码,而你同事的代码却被测试人员一带而过的感觉。这个时候,测试人员最清楚哪个程序员“水平高”。

 

 

 

本研究基于扩展卡尔曼滤波(EKF)方法,构建了一套用于航天器姿态与轨道协同控制的仿真系统。该系统采用参数化编程设计,具备清晰的逻辑结构和详细的代码注释,便于用户根据具体需求调整参数。所提供的案例数据可直接在MATLAB环境中运行,无需额外预处理步骤,适用于计算机科学、电子信息工程及数学等相关专业学生的课程设计、综合实践或毕业课题。 在航天工程实践中,精确的姿态与轨道控制是保障深空探测、卫星组网及空间设施建设等任务成功实施的基础。扩展卡尔曼滤波作为一种适用于非线性动态系统的状态估计算法,能够有效处理系统模型中的不确定性与测量噪声,因此在航天器耦合控制领域具有重要应用价值。本研究实现的系统通过模块化设计,支持用户针对不同航天器平台或任务场景进行灵活配置,例如卫星轨道维持、飞行器交会对接或地外天体定点着陆等控制问题。 为提升系统的易用性与教学适用性,代码中关键算法步骤均附有说明性注释,有助于用户理解滤波器的初始化、状态预测、观测更新等核心流程。同时,系统兼容多个MATLAB版本(包括2014a、2019b及2024b),可适应不同的软件环境。通过实际操作该仿真系统,学生不仅能够深化对航天动力学与控制理论的认识,还可培养工程编程能力与实际问题分析技能,为后续从事相关技术研究或工程开发奠定基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值