结对编程2——单元测试

成员:201421123005 谢晓萍  201421123030 陈宇杰

 代码地址:https://coding.net/u/cococok2/p/TeamWork-2/git

1.需求分析

(1)通过单元测试代码,测试加法是否能正确工作;

(2)通过单元测试代码,测试加减乘除功能。

(3)通过单元测试代码,测试计算类对于各种参数的支持:

a. 输入是有错误的,例如 “1 ++ 2”,

b. 在数值范围是 -1000 .. 1000 的时候,传进去 “10000 + 32768”,

c. 或者是 “ 248 / 0” 怎么办?

d. 怎么告诉函数的调用者 “你错了”? 把返回的字符串定义为 “-1” 来表示?

e. 那么如果真的计算结果是 “-1” 又怎么处理呢?

 

2.设计测试框架, 模拟测试数据

 

加减测试:

 结对编程2——单元测试_第1张图片

乘除测试:

结对编程2——单元测试_第2张图片

 

混合运算测试(带括号):

结对编程2——单元测试_第3张图片

 

括号的嵌套:

结对编程2——单元测试_第4张图片

 

括号输入不完整:

 结对编程2——单元测试_第5张图片

输入错误:(如输入1++2)

结对编程2——单元测试_第6张图片

 

除0的情况:(结果定义为无穷)

 结对编程2——单元测试_第7张图片

以下是运算模块的代码:

 

  1 package package1;
  2 
  3 import java.util.ArrayList;
  4 import java.util.List;
  5 public class autoCalculate {
  6     
  7     
  8     public List list;
  9      public autoCalculate(String input) { 10 char[] ins = input.toCharArray(); 11 list = new ArrayList(); 12 String str = ""; 13 14 for (int i = 0; i < ins.length; i++) { 15 16 if (ins[i] == '-' && ins[i + 1] >= '0' && ins[i + 1] <= '9' 17 && (i == 0 || ins[i - 1] == '(')) { 18 str += ins[i]; 19 continue; 20  } 21 22 if (ins[i] == '-' && ins[i + 1] == '('&&(i==0||ins[i-1]!=')')) { 23 list.add("0"); 24 list.add("-"); 25 list.add("1"); 26 list.add("*"); 27 continue; 28  } 29 if (!checkFuhao(ins[i])) { 30 str += ins[i]; 31 if (i == ins.length - 1) { 32  list.add(str); 33  } 34 } else { 35 if (!"".equals(str)) { 36  list.add(str); 37 str = ""; 38  } 39 list.add(ins[i] + ""); 40  } 41 42 if (i>0&&ins[i]=='('&&ins[i-1]>='0'&&ins[i-1]<='9') { 43 list.add(list.size()-1,"*"); 44  } 45  } 46 47  } 48 49 String yunsuan(List list) { 50 try { 51 int zuo = haveZuoKuoHao(list); 52 if (zuo != -1) { 53 int you = lastYouKuohao(list, zuo); 54 List l = removeKuohao(list, zuo, you); 55  addKuohao(list, yunsuan(l), zuo); 56  yunsuan(list); 57  } 58 int chengchu = haveChengChu(list); 59 if (chengchu != -1) { 60  chengchuYunsuan(list, chengchu); 61 } else { 62  jiajianYunsuan(list); 63  } 64 if (list.size() == 1) { 65 return list.get(0); 66  } 67 } catch (Exception e) { 68 System.out.println("error"); 69 System.exit(0); 70  } 71 return yunsuan(list); 72  } 73 74 public void jiajianYunsuan(List list) { 75 for (int i = 0; i < list.size(); i++) { 76 if (list.get(i).equals("+")) { 77 double last = Double.parseDouble(list.remove(i + 1)); 78  list.remove(i); 79 double first = Double.parseDouble(list.get(i - 1)); 80 list.set(i - 1, last + first + ""); 81 i--; 82  } 83 if (list.get(i).equals("-")) { 84 double last = Double.parseDouble(list.remove(i + 1)); 85  list.remove(i); 86 double first = Double.parseDouble(list.get(i - 1)); 87 list.set(i - 1, first - last + ""); 88 i--; 89  } 90  } 91 92  } 93 94 public void chengchuYunsuan(List list, int chengchu) { 95 double last = Double.parseDouble(list.remove(chengchu + 1)); 96 String fuhao = list.remove(chengchu); 97 double first = Double.parseDouble(list.get(chengchu - 1)); 98 if (fuhao.equals("*")) { 99 list.set(chengchu - 1, first * last + ""); 100  } 101 if (fuhao.equals("/")) { 102 list.set(chengchu - 1, first / last + ""); 103  } 104 105  } 106 public int haveChengChu(List list) { 107 for (int i = 0; i < list.size(); i++) { 108 if (list.get(i).equals("*") || list.get(i).equals("/")) { 109 return i; 110  } 111  } 112 return -1; 113  } 114 115 public List removeKuohao(List list, int zuo, int you) { 116 List l = new ArrayList(); 117  list.remove(you); 118  list.remove(zuo); 119 for (int i = zuo; i <= you - 2; i++) { 120  l.add(list.remove(i)); 121 i--; 122 you--; 123  } 124 return l; 125  } 126 127 public int haveZuoKuoHao(List list) { 128 for (int i = 0; i < list.size(); i++) { 129 if (list.get(i).equals("(")) { 130 return i; 131  } 132  } 133 return -1; 134  } 135 public int lastYouKuohao(List list, int zuo) { 136 int zuoIndex = 1; 137 int youIndex = 0; 138 for (int i = zuo + 1; i < list.size(); i++) { 139 if (list.get(i).equals("(")) { 140 zuoIndex++; 141  } 142 if (list.get(i).equals(")")) { 143 youIndex++; 144  } 145 if (zuoIndex == youIndex) { 146 return i; 147  } 148  } 149 return -1; 150  } 151 public boolean checkFuhao(char a) { 152 if (a == '+' || a == '-' || a == '*' || a == '/' || a == '(' 153 || a == ')') { 154 return true; 155  } 156 return false; 157  } 158 159 public void addKuohao(List list, String yunsuan, int zuo) { 160  list.add(zuo, yunsuan); 161 162  } 163 164 }

 

 

代码覆盖率:

 结对编程2——单元测试_第8张图片

结对照片:

结对编程2——单元测试_第9张图片

psp:

PSP2.1

Personal Software Process Stages

Estimated time(min)

actual time(min)

Planning

计划

11

6

· Estimate

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

120

125

Development

开发

70

90

· Analysis

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

20

30

· Design Spec

生成设计文档

4

5

· Design Review

设计复审

10

5

· Coding Standard

代码规范

4

5

· Design

具体设计

20

25

· Coding

具体编码

40

50

· Code Review

代码复审

10

15

· Test

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

10

15

Reporting

报告

10

12

·

测试报告

5

5

·

计算工作量

3

5

·

并提出过程改进计划

4

4

 

 小结:

1.我们的这次合作很顺利,同伴的耐心欠佳,但是他却有很强的动手能力,以及坚持不懈的习惯。在这次合作中,我们都发挥了自己的优势,起到了1+1>2的效果。

2.在完成这次结队作业的过程中,我们在代码规范和编程思想上有了进一步的磨合,除了在学习新内容上花费了一些时间,总体上还是很顺利的。

 

你可能感兴趣的:(结对编程2——单元测试)