大纲
一、需求分析
二、Bug处理
三、新功能实现
四、测试
一、需求分析
需求分两种,一种是Bug处理,就是处理程序的报错行为;另一种是新功能的实现,包括现有功能改进(Enhancement),修改功能等。
1.Bug处理。当测试跟你反馈有bug的时候别紧张,先观察一下报错,是不是程序的报错,有可能是测试的环境问题,集群部署问题等等。如果是自己的程序出错,接着看下文。
2.新功能的实现。跟提需求的人多确认几遍需求,最好有明确的PRD(product requirement document) 或者邮件等说明。先聆听需求,别急着反驳能不能实现。这也是我在工作初期犯的错,经常心太急急着去反驳能不能实现。正确的做法应该是先听完全部需求,自己梳理一下,再去针对具体需求进行分析实现的可行性。
二、Bug处理
1.观察报错。俗话说的好:日志打的好,处理Bug没烦恼。除了打好log之外,对程序异常的正确处理也非常重要,但这个属于代码规范的范畴,后续针对打log和代码规范再写文章。
2.精读代码。许多人一遇到报错,立马就上debug,debug本身没错,但至少先定个范围,而且有些Bug根本用不着debug。正确的做法是对着这段出现Bug的代码进行精读,一行也别落下,在一些判断或者传参的时候是否考虑空值情况,是否包括了临界条件等等。先把大段的代码缩小为可疑的一个小区间,后面再针对性的debug。
3.谷歌。有些报错可以直接复制黏贴搜索栏上,但有些报错需要自己先把问题抽象出来再进行搜索。搜索遵循由精确到模糊,当精确查找的方案不能解决你问题的时候,需要通过关键字搜索,让其他方案给你思路。举个例子:
a.精确:cause by ***。类似这种报错直接贴在搜索栏上,会针对性给你解决方案。
b.模糊:Zookeeper + timeout。
4.Stack Overflow定制化提问。针对你的问题,先去Stack Overflow搜一圈,优先看votes和answer多的。如果都没有的话,可以把你代码和问题贴上面,没过几分钟就会有热心的外国小哥来给你解答的,顺便纠正你的语法错误。
三、新功能实现
1.借鉴现有项目或其他好的项目源码。如果你现在的项目是一个大型项目,并且这个新功能跟之前的类似,那么直接找到那部分代码直接模仿就可以了。我在我电脑保存着很多优质的开源代码,当遇到一些类方法不会使用时,也会直接进行搜索借鉴。
2.官方文档。当需要使用一个技术栈去实现某个功能的时候,可以先去查阅官方文档,根据文档写个demo。多花点心思看官方文档,就可以节约大把查阅博客的时间。demo一定要投入最少的精力,保证方案的可行性就可以。
3.Github。Github有两种搜索方法,一种是针对项目功能,一种是针对技术栈的。当你知道什么样的项目有你想要的功能的时候,可以用项目去搜索,然后再分析里面的实现。当你知道实现的技术栈的时候,直接用技术栈去搜索更加精确。以登陆功能举例:
a.功能搜索:
b.项目搜索:
c.技术栈搜索:
四、测试
测试分为功能测试和代码质量测试等,具体测试的粒度和方法根据公司的要求和开发者的习惯。
1.针对Bug的测试,只需要按照原来的报错步骤再走一遍,看是否报错即可。
2.针对新功能的测试,开发者除了补上完整的UT之外,应该给予测试同事一些测试用例,对新功能进行完整测试,而不是简单的happy path。
你的开发流程是怎么样的呢?欢迎留言谈谈你的看法~