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

2023-11-11 19:40

本文主要是介绍测试不是程序员的救命稻草,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

 

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

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

有一张图片很说明问题:


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

这个是很多初入软件行业的程序员遇到的问题,也是某些始终无法将代码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太多了。如果程序员写代码眉毛胡子一把抓,不进行分解,不进行单元测试,那么测试人员可能天天都在测你写的代码,而你同事的代码却被测试人员一带而过的感觉。这个时候,测试人员最清楚哪个程序员“水平高”。

 

 

 

这篇关于测试不是程序员的救命稻草的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/392411

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------

可测试,可维护,可移植:上位机软件分层设计的重要性

互联网中,软件工程师岗位会分前端工程师,后端工程师。这是由于互联网软件规模庞大,从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢?它规模小,通常一个人就能开发一个项目。它还有必要分前后端吗? 有必要。本文从三个方面论述。分别是可测试,可维护,可移植。 可测试 软件黑盒测试更普遍,但很难覆盖所有应用场景。于是有了接口测试、模块化测试以及单元测试。都是通过降低测试对象

day45-测试平台搭建之前端vue学习-基础4

目录 一、生命周期         1.1.概念         1.2.常用的生命周期钩子         1.3.关于销毁Vue实例         1.4.原理​编辑         1.5.代码 二、非单文件组件         2.1.组件         2.2.使用组件的三大步骤         2.3.注意点         2.4.关于VueComponen

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

如何成为一个优秀的测试工程师

链接地址:http://blog.csdn.net/KerryZhu/article/details/5250504 我一直在想,如何将自己的测试团队打造成世界一流的团队?流程、测试自动化、创新、扁平式管理、国际标准制定、测试社区贡献、…… 但首先一点是明确的,就是要将每一个测试工程师打造成优秀的测试工程师,优秀的团队必须由优秀的成员构成。所以,先讨论“如何成为一个优秀的测试工程师”,