软件测试作业——WordCount

 

代码地址:https://github.com/maymaymaymaymay/WordCount

如下是PSP表格:

PSP2.1表格

PSP2.1

PSP阶段

预估耗时

(分钟)

实际耗时

(分钟)

Planning

计划

 30 20

· Estimate

· 估计这个任务需要多少时间

 30 20

Development

开发

 740 910

· Analysis

· 需求分析 (包括学习新技术)

 120 200

· Design Spec

· 生成设计文档

 30 30

· Design Review

· 设计复审 (和同事审核设计文档)

 20 20

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

 30 60

· Design

· 具体设计

 60 60

· Coding

· 具体编码

 300 360

· Code Review

· 代码复审

 120 120

· Test

· 测试(自我测试,修改代码,提交修改)

 60 60

Reporting

报告

 180 270

· Test Report

· 测试报告

 60 120

· Size Measurement

· 计算工作量

 60 120

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 60 30
 

合计

 960 1200

 

解题思路:

将问题细化,如基本功能,知识要点可分为:

1、如何读取一个文件,并将其转为字符串

2、处理获得的字符串:读取字符数,通过判断逗号和空格得到单词书,读取字符串的行数

3、将内容输入到指定文件

4、如何将Java文件转化为exe文件

5、获取main函数参数之后进行处理,通过对比参数与相关指令从而决定调用那个函数

 

 程序设计实现过程:

 代码涉及的类有:

readFileChars(用于读取指定文件中的字符数)

readFileWords(用于读取指定文件中的字符数)

readFileLine(用于读取指定文件中内容的行数)

writeToFile(用于把指定内容写入指定文件中)

readMoreData(用于获取指定文件的代码行/注释行/空行)

searchFiles(用于遍历当前目录)

 

由主函数的参数获得用户输入的是哪个指令(如-c,-w,-l,-o等),以此决定调用哪个函数

 

代码说明:

readFileChars()

//读取文件中的字符数   -c
	public static String readFileChars(String fileName) {
		File file=new File(fileName);
		long len=file.length();
		String text=fileName+",字符数:"+len+"\r\n";
		System.out.println(text);
		//textToFile(text);
		return text;
	}


readFileWords()

//计算单词数的过程,除开逗号和空格在开头和结尾,或者两者连续出现的情况外,
//每次出现逗号和空格都记为一个单词的出现
for(int i=1;i<str.length()-1;i++){
				if((String.valueOf(str.charAt(i))).equals(",")||(String.valueOf(str.charAt(i))).equals(" ")){
					if(judgeWord==false){
						count++;
						judgeWord=true;
					}
					
				} else{
					judgeWord=false;
				}
			}

 

readFileLine()

while((s=bReader.readLine())!=null){
					sb.append(s);
					count++;
				}

 

writeToFile()

try {
			reader = new FileReader(tempFile);
			BufferedReader bReader=new BufferedReader(reader);
			StringBuilder sb=new StringBuilder();
			String s="";
			try {
				while((s=bReader.readLine())!=null){
					sb.append(s+"\r\n");
				}
				bReader.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			str=sb.toString();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		textToFile(str,fileName);   //将之前获得的内容写入指定文件

 

searchFile():

	public static List<File> searchFiles(String fileDir,String str){
		List<File> fileList=new ArrayList<File>();
		File file=new File(fileDir);
		File[] files=file.listFiles();

		for(File f:files){
			if(f.isFile()){
				fileList.add(f);
			}else if(f.isDirectory()){
				//System.out.println(f.getAbsolutePath());
				searchFiles(f.getAbsolutePath(),str);
			}
		}
//		for(File f1:fileList){
//			if(f1.getName().endsWith(str)){
//				
//			System.out.println(f1.getName());
//			}
//		}
		return fileList;
		
	}

  

 

 

测试用例的设计

总结白盒测试的各种方法:语句覆盖,判定覆盖,条件覆盖,路径覆盖等。

得出以下测试用例:

测试用例预期结果
wc.exe -c -w - l note.txt分别显示出note.txt中的字符数,单词数,行数
wc.exe -w -l -c result.txt即使指令输入顺序不一样,但是结果与上面的一致
wc.exe -o result.txt把以上输出的结果写入result.txt中
wc.exe -c -w - l note.txt -o result.txt 以上结果直接显示且同时添加到result.txt中
wc.exe -o 结果提示:-o后面需要加入文件名
 wc.exe -a note.txt 结果显示note.txt 的代码行/空行/注释行
 wc.exe -s *txt 显示当前目录下的txt文件
 wc.exe -a -s *txt 实现当前目录下的txt文件中的代码行/空行/注释行
 wc.exe 提示指令不完整

 

部分运行结果:

 

 

 

 

 

参考文献链接

一个更简单的Java转exe的方法:https://jingyan.baidu.com/article/ca00d56c59f881e99eebcff7.html

Java相关操作文件的例子:http://blog.csdn.net/liuweiyuxiang/article/details/69487326

Java判断指定字符:http://blog.csdn.net/yeyingss/article/details/53690098

转载于:https://www.cnblogs.com/zhxm11/p/8609593.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值