码迷,mamicode.com
首页 > 其他好文 > 详细

WcPro项目(WordCount优化)

时间:2018-04-07 22:57:56      阅读:388      评论:0      收藏:0      [点我收藏+]

标签:修改   调用   截图   iat   length   ret   system   cal   学习   

一、项目GitHub地址

https://github.com/ReWr1te/WcPro

二、项目PSP表格

PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 20 20
· Estimate · 估计这个任务需要多少时间 20 20
Development 开发 870 1160
· Analysis · 需求分析 (包括学习新技术) 60 80
· Design Spec · 生成设计文档 30 30
· Design Review · 设计复审 (和同事审核设计文档) 30 60
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 30
· Design · 具体设计 180 240
· Coding · 具体编码 180 240
· Code Review · 代码复审 120 120
· Test · 测试(自我测试,修改代码,提交修改) 240 360
Reporting 报告 100 70
· Test Report · 测试报告 30 30
· Size Measurement · 计算工作量 10 10
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 60 30
合计 990 1250

三、个人接口及其实现

本次项目基本任务部分共分为输入控制、核心处理、输出控制和其他(本组计划添加GUI)组成,我所负责的部分为输入控制。

任务需求为:对输入进行有效性校验,识别和处理无效输入,并针对有效输入,从中提取所需数据。

根据需求定义了如下接口:

外部接口负责和其他模块通信,调用内部子接口实现功能:

// get the content in a file and return the result
public String parseCommand(String[] args) 

子接口分别完成参数处理、获取地址、获取文本内容以及对于文本内容是否为半角字符的判断:

// judge the input parameters
public int paraHandling(String[] args)
// get the address
public String getAddress(String fileName)
// get the content
public String getContent(FileReader fr, BufferedReader br, StringBuffer sb, String address)
// check half-width characters
public int halfWidthChar(String content)

下面取两个典型代码段分析(全部代码请参见GitHub源码):

这是参与外部调用的接口,主函数通过调用该接口来读取文件并获得文件内容:
// get the content in a file and return the result
public String parseCommand(String[] args) {

    // initiate variables
    // initiate content file, each line, filename and address to store related info
    String address, content;

    // initiate file reader, buffered reader and string buffer to store file medially
    FileReader fileReader = null;
    BufferedReader bufferedReader = null;
    StringBuffer stringBuffer = null;

    // call the functions to get address and then content
    if (paraHandling(args) != 1)
        return null; // to return a void result
    else {
        address = getAddress(args[0]);
        content = getContent(fileReader, bufferedReader, stringBuffer, address);
        if (halfWidthChar(content) == 0) return null;
        else return content;
    }
}

该接口结构简单清晰,因为代码已经很好地封装在了其它函数中。

在完成了必要变量的初始化之后,直接使用简单的if结构调用内部函数就能完成相应功能。

调用内部函数的顺序为:

参数判断→获取地址→获取文本→半角字符判断

下面是半角判断的函数,通过对于字符串字节长度的比较来判断文本内容是否全为半角字符:
// check half-width characters
public int halfWidthChar(String content) {
    if (content.getBytes().length == content.length())
        return 1;
    else {
        System.out.println("half-width characters only!");
        return 0;
    }
}

四、测试用例的设计以及测试效率的满足

本次测试用例的设计采用黑盒测试和白盒测试相结合的方式

黑盒测试通过不同的输入类型(包含输入参数对应的文本文件内容类型)来测试功能的正确性;白盒测试在尽量覆盖所有路径(函数结构比较简单,所有路径大致与下列测试用例相符)的情况下对每个路径进行参数与返回值的匹配正确性测试:

技术分享图片

单元测试代码举例如下:

@Test
public void parseCommandTest0() throws Exception { // #0 zero-parameter test (black-box)
    String[] paras = {};
    System.out.println("parseCommand() Test0 started.");
    assertEquals("Failed",null, cp.parseCommand(paras));
    System.out.println("parseCommand() Test0 succeeded.");
    System.out.println("parseCommand() Test0 finished.");
}

五、测试用例的运行截图

单个测试用例的运行截图(代码参照上述代码):

技术分享图片

所有用例的运行截图:

技术分享图片

可以看出,每个测试用例都通过了,意味着实际输出与预期输出相一致,测试用例的质量和源代码质量都符合要求。

(所有测试用例见GitHub: UTCaseInput.xlsx,实现见测试类源代码)

六、小组贡献分

待补充。

WcPro项目(WordCount优化)

标签:修改   调用   截图   iat   length   ret   system   cal   学习   

原文地址:https://www.cnblogs.com/ShiyuanTian/p/8734938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!