一、产品开发流程
正常的互联网开发app的流程大致如下:
产品规划,定产品方向
定需求,定产品交互原型
UI根据线框图设计视觉稿
线框图定好以后,产品与研发进行讨论,修改定稿
研发根据视觉稿搭建UI框架
研发根据视觉稿定义API协议文档
APP端与服务端各团队小组定制任务计划
研发APP端与服务端根据API文档并行开发功能
APP端与服务端按照项目计划的时间对接API与测试
研发修复回归测试反馈的bug,提交beta版
测试通过,提交给运营发布到渠道上线
【注意:接口文档定义好了,代表两端已经都很熟悉需求了,只需要在
开发周期严格按照接口文档的来,并且共同更新和完善这个接口文档】
二、快速搭建项目
定开发规范
版本管理
搭建UI框架
选用开发库集成(或自造轮子)
第三方服务集成(视情况而定)
1.定义开发规范
一个项目一般不会只有一个人独立开发,就算是独立开发,我们也应该定一下开发规范,一般会有什么样的规范?
命名规范
代码规范
代码管理规范
2.命名规范
命名规范包括:
项目命名
包命名
类命名、成员变量命名
资源文件命名
3.代码规范
代码规范视语言而定,例如:开发android使用的是Java,自然要按照Java的编码规范进行编码,比如命名采用驼峰命名法,编码的时候也要符合Android的开发规范,比如UI线程不做任何耗时的操作,像网络请求、数据库操作都需要放到子线程中去做,只有UI的刷新才在UI线程中做,像这些规范,可以根据自身在项目遇到的问题来定,定规范的好处就是减少踩坑的几率,提高开发的质量。
4.代码管理
对于一个经常更新迭代的产品,需要对代码进行分支管理,最好使用git代码仓库对代码进行管理。建议代码版本管理由SVN逐步过渡到git,跟上时代的潮流。
三、测试
1.功能性测试
UI与技术,要兼任QA的角色。根据需求测试功能与业务逻辑(包括界面交互流程与细节)
2.非功能性测试
非功能性的一些因素,这里就要提到【云测】这个东西,例如Testin,因为现在设备太多了,如果公司要买一堆设备来做测试,成本太高,况且设备更新得太快,根本就跟不上,所以就有了云测这个东西,它是一个云测试平台服务,提供了一大批主流机型,我们就直接省去购买设备的成本,还能得到完善的测试报告。
优点:
终端云,省去测试设备购买租赁成本
高效率节省测试人员成本及时间
包含兼容性测试、性能测试、功能测试
操作简单、详细测试报告生成
四、团队协作(禅道)
利用【禅道】工具进行团队协作敏捷开发,与项目Bug测试管理跟踪
1.任务
禅道中,迭代的核心是任务,而任务是基于对需求的分解,完成了任务,也就实现了需求。
需求分解
将关联到每次迭代中的每个需求进行估算、分解为若干任务
做任务
做完任务后在"迭代-版本"创建版本和提交测试,在"迭代-测试任务"查看测试进展和报告
解BUG
在"迭代-版本"查看版本所产生的BUG,进行解决
2.迭代
创建迭代时关联产品;
编辑迭代时关联需求(也就是要实现哪些个需求);
通常一个迭代实现一个计划(实现计划中关联的需求和BUG)。
迭代-版本
在一个迭代中,一般会创建若干版本,以实现尽早测试
迭代-测试任务
一个版本完成后,即可提交测试(为QA创建一个测试任务)。
3.敏捷测试
在一个迭代中,要规划几个版本(build),才能实现尽早测试。整个迭代过程就是不断实现需求/测试的过程,而没有一个集中解决BUG的过程,但在最后会有一个验收测试和发布的过程。
1.迭代版本(build):保持不变,有些字段名称略有变动,不影响理解。
2.测试版本(testrun):改为 测试任务。
版本指的都是扩展版本,其基本定义为:version# (role#build#)),比如:0.5.0 (C2)。
五、可持续化集成(Jenkins)
Jenkins主要用于公司持续集成环境的搭建。起到自动构建、自动编译、自动化测试一体化的功能,它提供了数百个插件支持建设,测试,部署和几乎任何项目自动化(在后续团队扩大了的情况下采用)
减少风险
一天中进行多次的集成,并做了相应的测试,这样有利于检查缺陷,了解软件的健康状况,减少假定。
任何时间、任何地点生成可部署的软件
增强项目的可见性