开发流程补全

在开发过程中我意识到一个问题

具体问题就是我没有一个可靠的机制来防止自己犯错

现在的流程是 开发 + 调试 -> 测试同学 -> 上线

这里测试的时间会有点长,因为bug会有点多,然后需要修改bug,然后测试验证
改bug时间 = 理解测试bug描述的内容 + 复现bug + 阅读代码 + 找出漏洞修改 + 测试验证关闭bug

改进后的流程是 开发 + 调试 + 最后整体检查 + 写测试 -> 测试同学 -> 上线

这种开发模式会环节有点多,写测试 + 最后整体检查是多出来的

其实第一个开发模式是不负责任的,把风险转嫁给了测试。我们交给测试的代码应该是在自己看来检查不出问题了(而不是自己不做检查),测试作为上线最后把关验证代码

整体检查一遍其实也不会话费多少时间,就算是code review了吧
整体检查一遍计划时间是3个小时左右,其实就是跑一遍整个prd的描述

编写测试真的会占用很多时间吗?

其实并不见得

首先,我们并不需要为所有代码添加测试

比如 1 + 1 === 2 这种就不需要

其次,我们需要熟悉测试框架和工具,做到信手拈来则会提高效率

哪些代码需要测试,这是个问题。相比测试覆盖率100%这种伟大的目标,我提倡的是指哪打哪的方针,只针对自己没有信心的代码编写测试

随着测试代码的增加收益会随之降低,所以指导思想就是,自己觉得会出错的,后面想要修改实现的,实现复杂的代码需要测试。这样会用极小的代价获取极高的收益

最后测试是一个工具,保证我们代码在自己手中的时候,再一个范围内不出问题的最后一道保障,现在我想将这道屏障竖起来,被丢掉的底裤穿起来

设计模式则是在开发中减少bug,清晰思路,方便扩展,方便修改的手段,这是在编码阶段就有一个良好的结构自然会减少很多bug

这些机制都是尊重墨菲定律而制定的方案,肯定不能百分百解决问题,但是会极大的减小出问题的概率,甚至提升整个项目的效率,提升项目质量
所以后面的开发流程就被我改成了

开发(依赖设计模式原则) + 调试(开发的反馈) + 写测试 + 最后检查 -> 测试同学 -> 修改bug -> 回归 -> 上线

后面的开发流程务必遵守

bug是不可避免的,并且是测不完的,这就需要我们有一个策略能保证项目正常进行,这就是在一个合理的范围内保证项目正常运行。而这个合理的范围具体化就是测试编写的测试用例

其他问题

在开发中我们总想着快点完成任务,有的时候急于求成就会埋下很多不好的设计,想着写完了有时间再过来修改,就像迭代一样,一步一步完善。

还有一种编码方式是一步到位,该做的都做好,后面不需要返工。

这两种方法,暂时我倾向的一步到位为,不需要返工。但是实际工作中确是采用了迭代的方式,一步一步完善的。因为我做不到一步到位,总想着快点完成,控制不住自己

为什么我倾向于一步到位呢?因为返工是有成本的,需要重新理解自己写的代码,需要花费更多的时间。但是因为想要达到完美就止步不前也是不好的,所以其中权衡也没有一个标准答案

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

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

相关文章

Linux 锁机制

本文讨论了 Linux 内核中可用的大量同步或锁定机制。这些机制为 2.6 版内核的许多可用方法提供了应用程序接口(API) 。但是在深入学习 API 之前,首先需要明白将要解决的问题。 当存在并发特性时,必须使用同步方法。当在同一时间段…

CSS中越界问题经典解决方案

8.CSS相关知识 (1)如何解决父元素的第一个子元素的margin-top越界问题 1)为父元素加border-top: 1px;——有副作用 2)为父元素指定padding-top: 1px;——有副作用 3)为父元素指定overflow:hidden;——有副作用 4)为父元素添加前置内容生成——推荐使用 .parent:before { conten…

用可编写脚本的终结点遍历REST应用程序

我喜欢JDK附带ScriptEngine的事实。 当您要评估服务器环境中已经部署的应用程序并进行故障排除时,它非常灵活。 将此REST端点添加到Java EE应用程序中,它将使您可以立即访问该应用程序的内部状态。 package myrestapp;import java.io.StringReader; imp…

win7笔记本为手机共享wifi

1、cmd netsh wlan set hostednetwork modeallow ssidyourname keyyourpassword 开启win7的虚拟wifi,让电脑变成无线路由器 这时,网络连接中会多出一个网卡为“Microsoft Virtual WiFi Miniport Adapter”的无线连接2。如果没有,需要更新无线…

createjs中shape的属性regX和regY

官方文档说regX和regY是图形与注册点的距离。 那么注册点是什么呢? 我理解注册点就是图形的x/y对应的点图形动效的原点就是注册点 如果修改图形的regX和regY值图形在画布上的位置是会被改变的,但是注册点其实并没有被改变。因为图形的x/y值并没有被改…

CSS3里的display

默认值:inline 适用于:所有元素 继承性:无 动画性:否 none:隐藏对象。与visibility属性的hidden值不同,其不为被隐藏的对象保留其物理空间inline:指定对象为内联元素。block:指定…

H3C 单区域OSPF配置示例二

转载于:https://www.cnblogs.com/fanweisheng/p/11163688.html

身份反模式:联邦筒仓和意大利面条身份

分析公司Quocirca的最新研究证实,现在许多企业的外部用户比内部用户更多:在欧洲,有58%的企业直接与其他企业和/或消费者的用户进行交易; 仅在英国,这一数字就达到了65%。 如果您回顾历史&#x…

OpenSSL命令

Openssl Windows下编译过程1、下载openssl源代码以及相应的vc工程2、下载perl工具,如:ActivePerl-5.8.8.820-MSWin32-x86-274739.msi3、安装ActivePerl4、打开控制台程序,在openssl解压后的目录下执行Perl Configure VC-WIN32命令&#xff0c…

修改webpack的publicPath为动态设置以适配公司活动平台

背景: 我们需要将React开发的应用部署到一个活动搭建平台上,这意味我们只需要上传源码,没有搭建服务器的环节,没有配置Nginx的环节。具体步骤就是在该平台新建一个活动,然后将自己的源码传到这个活动下,然…

多个气泡向上冒出!

这里展示白色半透明气泡如下图:实际是动态 思路:HTML里只需要一个CANVAS元素,Javascript里操作canvas 1、给canvas里绘制背景图片 2、在绘制半径为0-10px的圆形,x坐标屏幕水平随机,y所标竖直大于屏幕高度。 圆形背景…

注入域对象而不是基础结构组件

依赖注入是Java(以及许多其他编程语言)中广泛使用的软件设计模式,用于实现控制反转 。 它提高了可重用性,可测试性,可维护性,并有助于构建松耦合的组件。 如今,依赖注入是将Java对象连接在一起的…

分享25个优秀的网站底部设计案例

相对于网站头部来说,关注网站底部设计的人很少。我们平常也能碰到有些网站的底部设计得很漂亮,给网站的呈现来一个完美的结尾。这篇文章收集了25个优秀的网站底部设计案例,一起欣赏。 me & oli La Bubbly Poogan’s Porch GiftRocket Lin…

wbepack中output.filename和output.chunkFilename

对于webpack配置中filename和chunkFilename在使用中有些不懂的地方,研究之后记录如下。 filename: string | function 此选项决定了每个输出 bundle 的名称。这些 bundle 将写入到 output.path 选项指定的目录下。 对于单个入口起点,filename 会是一个…

页面添加锚点后如何点击不改变URL?

直接奔主题&#xff0c;前端简单地锚点实现方法大家都会&#xff0c;无非就是在把 a 标签的 href 写成想要跳到的元素的id &#xff0c;比如点击 <a href"#box"></a> 页面就会自动滚动到 <div id"box"></div> 元素的位置。 那么这…

OP AMP - 反馈理论在运放中的应用

实际应用的系统绝大多数是闭环的&#xff0c;运放更是如此。 关于反馈理论&#xff0c;需要了解极点&#xff0c;零点&#xff0c;波特图&#xff0c;以及如何用相位裕度&#xff0c;幅值裕度 确定系统的稳定性&#xff0c;这里不作赘述 &#xff0c;不懂的部分可以到网上搜点…

具有Spring Boot和Java配置的Spring Batch教程

我一直在努力将Podcastpedia.org的一些批处理作业迁移到Spring Batch。 以前&#xff0c;这些工作是以我自己的方式开发的&#xff0c;我认为现在是时候使用一种更“标准化”的方法了。 因为我以前从未在Java配置中使用过Spring&#xff0c;所以我认为通过在Java中配置Spring B…

阅读react-redux源码 - 零

阅读react-redux源码 - 零阅读react-redux源码 - 一阅读react-redux源码(二) - createConnect、match函数的实现 react的技术栈一定会遇到redux&#xff0c;而在react中使用redux需要使用react-redux&#xff0c;那么react-redux是怎么包装redux已适用react的呢&#xff1f; …

kali linux 开启配置ssh服务

1. 一、配置SSH参数 修改sshd_config文件&#xff0c;命令为&#xff1a;vi /etc/ssh/sshd_config将#PasswordAuthentication no的注释去掉&#xff0c;并且将NO修改为YES //kali中默认是yes2. 将PermitRootLogin without-password修改为PermitRootLogin yes3. 然后&#xf…

CORS(跨域资源共享)

CORS&#xff08;跨域资源共享&#xff09;使用额外的HTTP头部来告诉浏览器&#xff0c;允许运行在origin(domain)上的Web应用访问来自不同源服务器上的指定资源。 浏览器访问一个web应用&#xff0c;这个web应用会发很多的跨域请求&#xff0c;例如加载不同源的JS/CSS脚本&am…