`

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

 
阅读更多

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

 

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

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

有一张图片很说明问题:


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

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

 

 

 

  • 大小: 145 KB
分享到:
评论

相关推荐

    黑马程序员测试题部分答案

    【标题】:“黑马程序员测试题部分答案”涵盖了在学习编程过程中可能会遇到的各类测试题目及其解答,主要由“黑马程序员”这个知名的IT教育机构的教学资源衍生而来。这些测试题目的答案,旨在帮助学习者检验自己的...

    软件测试TD程序员操作手册

    ### 软件测试TD程序员操作手册知识点梳理 #### 一、TD系统概述与登录流程 - **TD系统**:一款用于软件测试管理和缺陷跟踪的工具。它支持从需求管理到缺陷跟踪的整个生命周期。 - **登录流程**: - 打开IE浏览器...

    黑马程序员入学测试题

    【标题】:“黑马程序员入学测试题”是一份用于评估编程基础和理解能力的测试集,主要针对准备加入黑马程序员培训课程的学生。这份测试题旨在帮助新手程序员检验自己的知识水平,以便更好地适应学习环境。 【描述】...

    微软程序员测试题

    微软程序员测试题微软程序员测试题

    程序员极品逻辑判断力测试题100道

    标题中的“程序员极品逻辑判断力测试题100道”是指一套专为程序员设计的逻辑思维挑战题目,旨在提升编程人员的逻辑分析能力和问题解决能力。这类题目通常涵盖各种逻辑推理、数学问题、算法设计以及计算机科学基础...

    程序员测试软件程序员测试软件

    标题中的“程序员测试软件”指的是在软件开发过程中,程序员如何自我测试或互相测试代码以确保其质量和正确性。这是软件开发的重要环节,因为通过测试,可以发现并修复潜在的错误和漏洞,提高软件的稳定性和可靠性。...

    软件水平考试测试系统_程序员

    软件水平考试测试系统是针对程序员进行的一项专业能力评估,它主要涵盖了计算机科学和技术的基础知识,以及编程语言、数据结构、算法、操作系统、网络、数据库等多个方面的内容。这个测试系统旨在检验程序员在实际...

    黑马程序员基础测试题答案

    1、 编写一个函数,函数内输出一个字符串,并在主函数内调用它。 2、 编写程序计算12+22+32+....+1002的和. 3、 以下代码哪个是正确的?为什么? a....b....c....d....7、 编写一个可以获取文件扩展名的函数,形参接收一个...

    程序员测试,看看你适不适合做程序员吗

    标题中的“程序员测试”指的是对潜在程序员的一种评估方式,通过特定的题目来判断个人是否具备从事编程工作的能力和潜力。描述中的“看看里面的题目”暗示这是一道编程挑战,旨在检验解决问题的逻辑思维和算法能力。...

    程序员考试历年试题及答案

    4. 软件工程:软件开发过程、需求分析、设计模式、版本控制、测试方法等是软件开发团队协作的关键。 5. 数据库管理:SQL语言的使用,关系数据库的基本理论,数据库设计与优化等知识。 6. 法规与职业道德:程序员在...

    软件测试如何从程序员到测试工程师

    软件测试 转如何从程序员到测试工程师,没20字,没办法,后面凑数的,嘿嘿.....

    初级程序员试题 程序员考试类

    【标题】"初级程序员试题 程序员考试类"涉及的知识点主要涵盖以下几个方面: 1. **编程基础**:初级程序员试题通常会包括基本的编程概念,如变量、数据类型、运算符、流程控制(如if语句、for循环、while循环)、...

    2004年程序员考试测试系统

    该系统包含知识点详细内容 以及1991年至2003年的试题级解答

    程序员项目交接文档

    IT 项目交接文档概要是程序员在项目交接过程中的重要文件,它对项目的开发、测试和维护起着至关重要的作用。本文档概要将对程序员项目交接文档的主要内容进行概要介绍。 人事模块是程序员项目交接文档的重要组成...

    程序员青戈毕设资料库,程序员青戈毕设资料

    1. **软件工程基础**:软件工程是程序员进行项目开发的基础,它涉及需求分析、系统设计、编码实现、测试与维护等阶段。理解软件生命周期,掌握需求获取和文档编写技能,以及如何运用敏捷开发方法进行高效协作,都是...

    Flash程序员上机面试题目

    Flash程序员上级面试题目,ActionScript

    网页接口测试工具-Postman Window安装加设置中文压缩包程序员必备工具

    网页接口测试工具-Postman Window安装加设置中文压缩包程序员必备工具网页接口测试工具-Postman Window安装加设置中文压缩包程序员必备工具网页接口测试工具-Postman Window安装加设置中文压缩包程序员必备工具网页...

    程序员专用 编程输入法

    标题中的“程序员专用编程输入法”指的是专门为程序员设计的特殊输入法工具,旨在提升编码效率。这类输入法通常具有以下特点: 1. **快捷代码输入**:程序员输入法能够通过快捷键、组合键或者自定义短语来快速输入...

    程序员的必备工具

    程序员需要的工具不仅仅限于编程环境,还包括版本控制、项目管理、自动化测试、代码分析等多方面的应用。例如,Git是目前最流行的版本控制系统,它帮助程序员跟踪代码变更,协同开发;Trello或Jira则是项目管理工具...

    程序员、高级程序员测试卷、设计程序

    这个压缩包文件的标题"程序员、高级程序员测试卷、设计程序"表明其中包含了一系列针对这两个级别的专业人士的考试题目和程序设计相关资料。描述中提到的内容,即“程序设计理论实践的学习”和“程序员级、高级程序员...

Global site tag (gtag.js) - Google Analytics