基于用户行为事件开发自测模式思考

基于用户行为事件开发自测模式思考

一、简述

在开发过程中,每个开发者必须保证代码质量。保证开发代码质量实际上在开发阶段各个环节,主要包括三个环节: 开发前方案流程设计和预研、开发中代码质量、开发完毕后代码自测。以上三个环节都很重要,或者漏了上面一个环节对于上线后代码都是有风险的。有很多人拿到需求文档和设计稿时,上来就画页面,上来就是干。其实这种方式是极力不推荐的。

二、开发必经的三个阶段

开发前-开发前方案流程设计(三张图很重要)

1、UML用例图设计

对于复杂需求设计,特别和外部模块交互比较多情况,一般还需要UML用例图,可以快速确定此次需求产品边界.

2、流程图的设计

开发前期一般会有产品需求评审、API接口评审,然后自己根据这些信息整合,需要整个产品需求流程进行设计和规划,最好是以文档或流程图形式展示出来。在整理整个流程设计中肯定还会挖掘出更多隐藏的问题,甚至连产品都没有发觉,此时需要和产品进一步沟通,来不断完善和修改你的流程图,最后再把自己设计好的流程和产品一一对一遍确保无误。说明你此时对整个产品业务逻辑和流程就熟悉了。

设计整个需求软件流程图,但是流程图只能概括一个整个流程,无法深入具体细节,所以需要第二图。

3、状态转化图的设计

根据第一步流程图设计,设计出整个需求中涉及到的有效状态转化图,并梳理出核心case流程。我们都知道在软件任何复杂东西都可以先看做一个黑盒,然后外部对它进入输入事件,那么它会有一定输出状态。所以基于输入事件和输出状态这一点,我们可以做一些思考,比如对应于Android开发中功能需求也是这样,如果我们把此次功能需求看做是一个黑盒,比如UI第一次展示我们可以把它输入当做首次UI渲染事件,输出第一次渲染出来状态

  • 步骤1、事件和状态穷举(尽可能全)

首次UI渲染事件加上接着要么就是用户点击、滑动等各种用户行为事件以及内部预置的一些触发条件产生的事件,那么这些事件作为此次功能输入事件,那么会引起一些状态改变,状态改变就是一种输出,如果这种输出符合需求的预期,那么这就是有效的,如果不是那么可能就是bug了。我们可以各种事件包括事件组合,以及可能出现状态,全部列举出来。

  • 步骤2、事件和状态排列组合(可能涉及到多事件的组合,这样不容易漏)

然后以排列组合方式把不同事件和不同状态组合在一起,相当于把所有可能情况都列举出来。

  • 步骤3、无效事件+状态组合剪枝(去掉无效组合)

然后分析每条case,不可能出现不符合产品需求case去掉,我把它叫做状态树的剪枝。最后剩下的就是有效case. 最后画出这些case,从事件触发前后的状态转化图。

  • 步骤4、根据有效的事件+状态组合设计状态转化图

最后剩下的就是有效case. 最后画出这些case,从事件触发前后的状态转化图。

比如以一个文件下载列表展示需求举例,用户可以点击按钮暂停下载、可以点击继续按钮继续下载,可以删除正在下载的任务等

剪枝后的状态排列组合剩下有效组合图

2、开发中-就是根据开发前准备流程图和状态图,用代码翻译实现即可。

因为开发前做了很多准备设计工作,开发中反而是最为轻松,只需要对着设计好的流程图开发逻辑即可。

3、开发结束-此时就是开发自测阶段,如何确保自己能跑完所有的case

得益于前期准备了一张流程图和状态转化图,根据流程图先大致走一遍,没有问题,说明整体流程没有问题;然后再对着状态转化图,其实每一种状态的转化实际上就一条case。如果有问题,开发可以及时排查代码修改逻辑。如果所有状态图都跑完没问题,那么基本上这个需求因为代码逻辑出问题的概率就比较小,要么就是前期流程图或状态图就有问题,所以开发前期准备工作很重要。


   转载规则


《基于用户行为事件开发自测模式思考》 mikyou 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
MVP通信方案的思考 MVP通信方案的思考
MVP通信方案的思考一、简述MVC、MVP、MVVM区别市面上关于MVC、MVP、MVVM各种实现方案都不一样,下面简要说下MVC、MVP、MVVM之间的区别。 1、MVC模式 就是把软件分为三个部分: Model(数据模型层)、View(
2019-12-23
下一篇 
Android组件化通信方案 Android组件化通信方案
Android组件化通信方案一、背景随着业务规模不断扩大,模块化和组件化必将是一个很大的趋势。组件化的基础就是模块化,不断将业务进行拆分,按照业务边界将其拆分成一个个独立可测试、可运行的模块。但是必须面临一个很大问题就是组件与组件之间的通信
2019-12-23