(一)单元测试
(1) 三种代码
伪代码
产品代码
测试代码
一般测试:
边界测试:
测试出错情况
改正代码:
(2) TDD(Test Driven Devlopment, 测试驱动开发)
TDD的一般步骤如下:
明确当前要完成的功能,记录成一个测试列表
快速完成编写针对此功能的测试用例
测试代码编译不通过(没产品代码呢)
编写产品代码
测试通过
对代码进行重构,并保证测试通过(重构下次实验练习)
循环完成所有功能的开发
TDD的编码节奏是:
增加测试代码,JUnit出现红条
修改产品代码,JUnit出现绿条,任务完成
自行测试:
(二)面向对象三要素
(1)抽象
(2)封装、继承与多态
继承与多态的实现:
(四)练习
1使用TDD的方式设计关实现复数类Complex。
伪代码
产品代码
class complex
{
double re,im;
complex()
{
this.re=0;
this.im=0;
}
complex(double re)
{
this.re=re;
this.im=0;
}
complex(double re,double im)
{
this.re=re;
this.im=im;
}
complex add(complex p1,complex p2)
{
complex p=new complex(p1.re+p2.re,p1.im+p2.im);
return p;
}
complex minus(complex p1,complex p2)
{
complex p=new complex(p1.re-p2.re,p1.im-p2.im);
return p;
}
void print()
{
System.out.println("复数的值为:");
if(this.im!=0)
System.out.println(this.re+"+"+this.im+"i");
else
System.out.println(this.re);
}
}
public class Song
{
public static void main(String[] args)
{
complex c=new complex();
complex c1=new complex(2,7);
complex c2=new complex(5,2);
c1.print();
c2.print();
System.out.println("这两个复数的和为:");
System.out.println((c.add(c1,c2).re+"+"+
c.add(c1, c2).im+"i").toString());
System.out.println("这两个复数的差为:");
System.out.println((c.minus(c1,c2).re+"+"+
c.minus(c1, c2).im+"i").toString());
}
}
测试结果
3.统计PSP(Personal Software Process)时间
步骤 | 耗时 |
需求分析 | 5% |
设计 | 20% |
代码实现 | 40% |
测试 | 30% |
分析总结 | 5% |
四:总结
1.实验遇到的问题
错误的原因是公用类型必须在自己的文件中定义,按照eclipse提示重命名之后按Enter键进行重构
2.实验总结:这次实验主要内容是代码面向对象三要素的应用,以及代码的设计思想以及测试方法,通过这周和上周的PSP时间比例可以看出,设计和测试的比重增加,而代码实现的时间比重下降,这更接近于日常生活中的软件开发的基本程序,而不是书本上给定题目进行的练习。通过之前基本的练习已经初步掌握了Java程序设计的基本语句,今后将更加注重程序 设计思维的练习
3.单元测试的好处:
1.帮助开发人员编写代码,提升质量、减少bug。
2.提升反馈速度,减少重复工作,提高开发效率。
3.保证最后的代码修改不会破坏之前代码的功能。
4.使代码更容易维护。