需求分析
从接手这个开源项目以来,做的最多恐怕就是需求分析。对于软件工程,我认为最重要也是需求分析。通过与张老师线上线下的沟通交流,逐步明确了需求,包括很多业务逻辑上的细节。
录制版本功能:Terminator现阶段只支持录制一段数据进行回放,在实际使用过程中可能需要录制多段数据,并打上版本号,回放的时候根据需求回放特定版本数据。
回放模式选择:数据回放过程中可能遇到这样的问题,就是在录制时对于两个一样的请求,返回结果不一样。那么在回放的时候就可以有多种选择,一种就是按照录制的顺序依次返回应答,一种就是每次都返回第一次的应答,还有一种就是每次都返回最后一次应答。
录制版本功能点具体要求:
用户在录制数据的时候有一个版本管理功能,在每次录制结束可以保存为一个特定版本,同时也能删除历史版本;
用户在回放时可以选择历史版本数据。
回放模式选择:
依上面所述,用户在回放时可以选择3种回放模块进行回放
增加功能
明确了需求,就可以进行编写代码了。刚开始的时候,正是因为需求不明确,所以走了一些弯路。
比如,在录制的过程中,没有真正版本的含义,以为只要录制一次就成为一个版本,这样的话所有的版本就存在一个文件中,对于回放模式,回放非常不方便。后来,明白录制与回放功能都是针对某一个版本进行。所以在录制的时候,我们需求将历史版本罗列出来或者新建一个版本到数据库中。在选定版本后再进行其他操作。
在回放的时候,因为需要选定回放模式,所以我们在link链路的属性里加入回放模式,这样ReplayR的时候就可以根据不同的Handler进行回放。
前后端并行开发
首先在数据库中,我加入版本数据库version_index
我们可以看看version_index和data-index的结构
可以看到在这两个数据库当中都有了链路跟版本的ID,以便于我们后续操作。
很明显,有了数据库,我们就可以建立相应的操作方法及mapper文件,在action里加入相应action,用于网页操作。
在前端上,部署到tomcat上,启动链路均默认TUNNEL,这样做是方便以后操作。选择工作模式RECORD,此时先停止链路,为什么这样做?这是因为当启动链路后,整个link的storage已经被固定,而我们在RECORD里,要保存某个版本,必然先指定一个版本号,也就是会在磁盘上创建一个相应的文件夹用于保存版本信息。而在TUNNEL中是没有版本的,
此时,你可以选择新建版本,也可以继续录制历史版本,这个是用div浮层做的。目前不怎么美观,后续会完善。当新建版本时就会将这个版本加入到version_index中,包括它的linkId,name,addtime 历史录制是按照录制时间按最近排列,点击继续录制就会启动链路,并且将工作模式转为RECORD,实现RECORD功能。停止 是用来停止链路。而删除用来删除此版本,这个就是一个数据库的操作,同时将磁盘上相应文件删除。
对于回放模块,跟录制类似
首先将历史版本罗列出来,在回放模式这里有一个下拉框,在这里可以选择回放模式,目前是两种,一是按照最近一次,另外是按照第一次的。当我们在首页转换工作模式为REPLAY时,就先断开链路,跟录制类似,当弹出此窗口,点击REPLAY时,就启动链路并设置为REPLAY,在给web服务器传递参数时,我们会将这个回放模式一块儿传过去,作为link的一个属性,在回放handler里,根据回放模式来选择不同的handler,达到效果。
单元测试
在开发的过程中,刚开始,我用的myeclipse,所以测试只是写了一个很简单的测试程序,用JunitI测试,有时非常不方便,因为当测试完成,整个链路服务就会断掉。后来跟老师沟通后,用ecplise j2ee版,因为此项目原来就是来这上面创建的。这样可以实时将项目在tomcat上部署调试。
另外,还使用了firefox里的poster工具,可以在没有前端开发完成的情况下给服务器传递url参数
后续完善
首先前端上还需要大量优化,使其更人性化。
另外,后端上还有一些bug,需要不断调试完善。