系统单元测试规范-4:JAVA单元测试指引.doc

系统单元测试规范-4:JAVA单元测试指引.doc

ID:57378608

大小:38.50 KB

页数:9页

时间:2020-08-13

系统单元测试规范-4:JAVA单元测试指引.doc_第1页
系统单元测试规范-4:JAVA单元测试指引.doc_第2页
系统单元测试规范-4:JAVA单元测试指引.doc_第3页
系统单元测试规范-4:JAVA单元测试指引.doc_第4页
系统单元测试规范-4:JAVA单元测试指引.doc_第5页
资源描述:

《系统单元测试规范-4:JAVA单元测试指引.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、JAVA单元测试指引1.背景系统的规模及复杂度与时间及业务的拓展成正比。随着系统的规模不断变大,各子系统内的业务逻辑的新增,系统的代码总数也在不断的增加。部分业务在时间的推移上会发生变化引起系统在代码层面上的重构,系统代码在软件工程的生命周期中不断的迭代和变化。代码的新增以及重构都需要通过严格测试才能部署上线,公司目前对于上线功能采取的多数是黑盒测试,并未使用白盒测试对研发人员编写的代码进行更高的覆盖测试。而研发人员平时在功能开发完成后进行自测的时候使用的方式也因为个人喜好或各种原因没有形成统一。因此,系统若能在编译、部署、上线的时候能够对所有功能都进行尽可能全面的白盒测试将

2、会有助于降低系统在升级过程中的故障率,提高系统升级的速度。若能够通过更全面的测试发现代码中的隐藏缺陷,便能提升代码的健壮性,使系统在长期运行中发生更少的问题。2.需求研发人员在功能开发结束之后应当同时提交该功能的单元测试用例代码,并且该单元测试用例代码需要满足以下几点需求:2.1.功能覆盖1)每个单元测试代码中需要覆盖该功能的所有输入和输出,并对输出进行校验。2)最终目标每个系统的所有测试用例代码需要覆盖系统的所有功能。(存量系统在后续分阶段补充)1.1.测试颗粒化1)单元测试用例只测试小颗粒的功能。2)一个单元测试用例只涉及到一个被测模块,避免牵扯到太多的模块。1.2.测试

3、自动化1)单元测试的输入,输出以及校验全部自动化,不需要人工干预。2)系统编译的时候需要自动将所有单元测试执行一次,任意单元测试不通过不允予通过发布。1.3.持续维护1)新添加的功能和模块需要添加相对应的单元测试用例。2)重构或业务逻辑变更涉及到的功能和模块代码变化需要更新相对应的单元测试用例。2.方案基于公司在JAVA语言方面多数系统是采用Maven进行构建的现状以及Maven在系统构建的优势,故采用Maven进行系统构建+Junit进行用例测试的方案实现。研发人员可以借助Cobertura对自己编写的测试用例进行代码覆盖分析,以便对测试代码进行调整和优化。2.1.Mave

4、n1)Maven不仅仅能构建项目,同时还是一个依赖管理工具,一个项目管理工具,提供中央仓库帮助我们自动下载构件,也允许我们上传自己开发的jar包供各系统使用,这些都是自动化的非常方便。1)Maven提供的免费中央仓库涵盖了非常非常多的开源库,能满足绝大多数系统的使用需求。2)Maven对于目录结构有要求,约定优于配置,项目间切换就省去了学习成本。3)Maven项目对单元测试支持很友好,约定的test目录用来编写单元测试代码,maven在进行系统编译的时候自动执行test目录里测试用例,一旦出现用例不通过maven自动打包发布。4)Maven构建的系统默认集成了Junit单元测

5、试工具。1.1.Junit1)简单易用的单元测试工具,通过断言校验期望值与实际值的差异。2)支持图形交互,测试结果简洁明了。3)提供异常堆栈方便跟踪错误代码。1.2.JaCoCo1)简介JaCoCo是一个开源的覆盖率工具(官网地址:),它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant、Maven中;可以作为Eclipse插件,可以使用其JavaAgent技术监控Java程序等等。2)覆盖率概况标示绿色的为行覆盖充分,标红色的为未覆盖的行,黄色菱形的为分支部分覆盖,绿色菱形为分支完全覆盖。1)JaCoCo的使用方式:ØApacheAnt方式Taskcoverage

6、、Taskagent、Taskdump、Taskmerge、Taskreport、TaskinstrumentØ命令行方式使用方式说明:主要放在JAVA_OPTS中,比如:由AgentOptions的getVMArgument方法加载,各参数入AgentOptions的对应参数,为后续操作做为输入。系统在jvm停止的时候会dump覆盖率信息。ØApacheMaven方式(1)项目已jar包方式打包,引入junit和jacoco。(2)Build时执行instrument、report、check。(3)覆盖率生成到target/1.测试覆盖1.1.代码覆盖度单元测试中对每个被

7、测逻辑体内的代码覆盖有以下几种方法,其覆盖的程度按照顺序递增。这里借助一个示例对覆盖方法做一个简单的说明,供各位进行参考。假定被测逻辑入下图(长方形内为代码语句):1.1.1.语句覆盖语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。对应的用例如下:1.1.2.分支(判定)覆盖它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。对应的用例如下:1.1.3.条件覆

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。