WeCount软件测试

WeCount软件测试

 

 

github项目地址:https://github.com/inewRichard/WordCountPro

 

 

PSP表格:

 

 

                                PSP2.1  PSP

预估耗时

(分钟)


   实际耗时

(分钟)

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

 

 

 

 

接口实现:

我主要负责核心处理:

我的设计思想是先获取经过处理后的单词数据,对出现的各个单词分配一个计数值,然后利用排序算法得出单词的频率排序

 

代码如下:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

class doc {
	static String name;
	static String text;
	static String word="";
	static String[] stoplist;
	public static int linecount =1,allwordcount = 0,wordcount =0,symbolcount=0,codeline=0,nullline = 0,balaline =666;
	static boolean[] temp ={};
	public doc(){}
	public doc(String n,String t,boolean[] para){
		name = n;
		text = t;
		temp = para;
		cal();
	}
	public String  mes(){
		String message= "name:"+name+"\n";
		if(temp[2] ==true)
			message +="\tsymbolcount:"+symbolcount;
		
		if(temp[1] == true)
			message +="\twordcount:"+wordcount;
		
		if(temp[0]==true)
			message +="\tlinecount:"+linecount;
		if(temp[3] == true)
			message +="\tcodeline:"+codeline+"\tnullline:"+nullline+"\tbalaline:"+balaline;
		return message;
	}
	public static boolean isChinese(char c) {  
	    return c >= 0x4E00 &&  c <= 0x9FA5;// 根据字节码判断  
	}  	
	public static boolean isword(char c) {   
	    return (c>='A'&&c<='Z')||(c>='a'&&c<='z')||(c>='0'&&c<='9');  
	}  
	public static boolean isnum(char c) {  
	    return (c>='0'&&c<='9');  
	}
	public static boolean issymbol(char c){
		return !(isChinese(c)||isword(c));
	}
	private  static boolean isStop(String s){
		word = "";
		boolean isstop = false;
		if(doc.stoplist == null)
			return false;
		for(String sp:doc.stoplist){
			if(isequal(sp,s)){
				isstop = true;
				break;
			}		
		}
		return isstop;
	}
	private static boolean isequal(String sp, String s) {
		// TODO Auto-generated method stub
		if(sp.length() != s.length())
			return false;
		
			for(int i=0;i<sp.length();i++){
				if(sp.charAt(i)!=s.charAt(i))
					return false;
			}
		return true;
	}
	public static void cal(){
		ArrayList linewords = new ArrayList();
		ArrayList<String> line = new ArrayList<String>();
		String ts ="";
		int lineb=0;
		boolean isaword = false;
			//多少行是指的多少回车吗
			//单词数 ,如果是汉语呢,那应该是一个字是一个词咯?
		for(int i =0;i<text.length();++i){
			char temp = text.charAt(i);
			ts+=temp;
			if(temp=='\n'){
				linewords.add(allwordcount-lineb);
				lineb =allwordcount;
				linecount +=1;
				line.add(ts);
				ts="";
			}
			else if(isword(temp)&&!isnum(temp)){
				isaword = true;
			}
			else if(isChinese(temp)){
				allwordcount+=1;
				if(!isStop(""+temp));
					wordcount+=1;
				if(isaword)
					allwordcount +=1;
				if(isaword&&!isStop(word))
					wordcount +=1;
				isaword = false;
			}
			else if(issymbol(temp))
			{
				if(isaword)
					allwordcount +=1;
				if(isaword&&!isStop(word))
					wordcount +=1;
				isaword = false;
				if(issymbol(temp)){
					symbolcount +=1;
				}
			}
			if(isaword)
				word +=temp;
		}
		line.add(ts);
		linewords.add(allwordcount-lineb);
		allwordcount = isaword?allwordcount+1:allwordcount;
		if(isaword&&!isStop(word))
			wordcount++;
		/*for(int i=0;i<line.size();++i){			//solve the line problem
			System.out.println(line.get(i));
		}*/
		for(int i =0;i<linewords.size();i++){			//codeline,line and line you ***
			if((int)linewords.get(i)>1){
				codeline ++;
			}else if(isnullline(line.get(i)))
				nullline ++;
			else if(iszhushi(line.get(i))){
				balaline ++;
			}
				
		}
		
	}
	
	private static boolean iszhushi(String string) {
		// TODO Auto-generated method stub
		return false;
	}
	private static boolean isnullline(String str) {
		// TODO Auto-generated method stub
		boolean flag = false;
		for(int i=0;i<str.length();i++){
			if((!(str.charAt(i)==' '||str.charAt(i) =='\r'||str.charAt(i) =='\t'||str.charAt(i)=='\n'))&&!flag){
				flag = true;
			}else if((!(str.charAt(i)==' '||str.charAt(i) =='\r'||str.charAt(i) =='\t'||str.charAt(i)=='\n'))&&flag){
				return false;
			}
		}
		return true;
	}

}

  

 

测试用例的设计:

 

白盒测试,主要是根据输入的字符串数组的情况进行测试,比如字符之间是否有“-”连接,是否有其他非字母数字符号,以及单词的频率变化对输出结果的印象。

单元测试代码示例如下:

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;




public class NewleiTest {
	static boolean[]  para= {true,true,true,false};
	private static doc Doc=new doc("test.c","this is the test!\r\nthe second line!",para);

	@Before
	public void setUp() throws Exception {
	}
	
	@Test
	public void CalTest(){
		Doc.cal();
	}
	
	@Test
	public void ResultTest(){
		assertEquals(7, Doc.wordcount);
	}

	@Test
	public void test() {
		fail("Not yet implemented");
	}

}

  

黑盒测试:

黑盒测试是在模块封装的情况下对功能模块进行测试,我这里黑盒测试主要是对于输入参数变化的测试,相关的测试用例在我项目的测试清单里。

 

测试用例清单:

 

 

测试脚本运行截图:

 

转载于:https://www.cnblogs.com/zhangweij/p/8747534.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值