- 浏览: 425395 次
- 性别:
- 来自: 广州
最新评论
-
iwwenbo:
别逗好不好
Popup.js 弹出窗口 -
bugnuke:
尼玛 跑不了。。。
Popup.js 弹出窗口 -
tangzhifei:
创建Subversion授权文件放哪目录下?前面我的都对了,到 ...
Trac系列(8):windows下Apache+SVN+Trac安装及配置(一) -
zoutuo1986:
正在安装,确实很慢,一定要选择网速快的时候安装,
eclipse 插件springide安装 -
johnsonyang:
this.jmsTemplate.send(
...
spring,weblogic配置jms
文章列表
一、桩模块和驱动模块(以C语言为例):
很多人对桩模块和驱动模块的概念会搞不清楚,下面先介绍这两个概念:
模块结构实例图:
假设现在项目组把任务分给了7个人,每个人负责实现一个模块。你负责的是B模块,你很优 ...
- 2008-09-08 10:01
- 浏览 1949
- 评论(0)
完整的源代码如下:
1、UnitTest.h
/*
* Copyright (c) 2008, 胡添发(hutianfa@163.com)
*
* 简单的单元测试框架
*
*/
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
/*
* VC中没有sleep函数,自己写一个
* wait单位是毫秒
*/
extern void sleep(clock_t wait);
/*
- 2008-09-08 09:59
- 浏览 1434
- 评论(0)
在上一讲“单元测试的尝试”里我们遇到了几个问题:
1、代码重复的问题太多
2、测试结果需要人工去检查
3、对测试的总体信息也无从得知
本讲将构建一个简单的单元测试框架来解决以上的问题:
1、代码重复的问题太多。
这个问题很容易解决,只需要把判断预期结果和实际结果的逻辑提取到某个函数中即可。从整个代码来看,有两种类型的结果的函数:
(1)返回布尔型
(2)返回整数
因此,需要两个类型的判断预期结果和实际结果是否相符的函数:XUnit系列的框架的习惯使用assert*的命名来定义判断函数,对于通过的测试习惯打印一个“.”号,而对于失败的测试习惯打印一个“F”。
/*
* 判断是否取值为真 ...
- 2008-09-08 09:58
- 浏览 1324
- 评论(0)
以测试isOutOfRange函数为例,首先知道该函数在整个软件架构中处于最底层(叶子),所以对它进行测试并不需要写桩模块,只需要写驱动模块。要注意的问题是:对于测试结果是否通过测试不要使用printf方式打印被测试函数的返回结果值,否则就需要人工去检查结果了。
使用边界值的方法可以得到5个测试用例,写的驱动模块代码如下:
TestTriangle.cpp:
/*
* Copyright (c) 2008, 胡添发(hutianfa@163.com)
*
* 单元测试与集成测试
*
*/
#include "Triangle.h"
/* ...
- 2008-09-08 09:55
- 浏览 1559
- 评论(0)
白盒测试与黑盒测试的过程和方法是有一些区别的。
单元测试的步骤:
1、 理解需求和设计
理解设计是很重要的,特别是要搞清楚被测试模块在整个软件中所处的位置,这对测试的内容将会有很大的影响。需要记住的一个原则就是:好的设计,各模块只负责完成自己的事情,层次与分工是很明确的。在单元测试的时候,可以不用测试不属于被测试模块所负责的功能,以减少测试用例的冗余,集成测试的时候会有机会测试到的。
举例:
/*
* 判断三条边是否能够组成三角形
* 返回值:true-是; false-否
*/
bool isTriangle(int a, int b, int c);
测试该函 ...
- 2008-09-08 09:53
- 浏览 3870
- 评论(0)
1、Triangle.h
/*
* Copyright (c) 2008, 胡添发(hutianfa@163.com)
*
* 三角形类型判断
*
*/
#include<stdio.h>
#include<String.h>
/*
* 判断一个整数是否在(0, 200)区间内
* 返回值:true-否; false-是
*/
bool isOutOfRange(int i);
/*
* 判断三条边是否合法(即:判断三条边都在合法的范围内)
* 返回值:true-是; false-否
*/
- 2008-09-08 09:51
- 浏览 1605
- 评论(0)
程序设计对于软件的质量和软件实施过程的难易程度起着至关重要的作用。好的设计,即使聘用没什么经验的开发人员都很容易产生出高质量的代码出来;而差的设计,即使是经验很丰富的开发人员也很容易产生缺陷,特别是可重用性、可测试性、可维护性、可扩展性等方面的缺陷。
经过以上的分析,下面来看一下如何设计。在下图中,每个方框都使用一个函数来实现,为了跟用户界面分开,最顶上的函数不要写在main函数中。
把思路用流程图的方式表达出来,不用停留在脑袋里:
具体的函数的调用关系图:
复杂模块triangleType的流程图:
- 2008-09-08 09:49
- 浏览 1549
- 评论(0)
需求分析是后续工作的基石,如果分析思路有问题,后续工作可能就会走向不正确的方向,比如:代码重用性差、难于测试、难于扩展和难于维护等。反而,如果需求分析做的好,对设计、开发和测试来说,都可能是很大的帮助 ...
- 2008-09-08 09:47
- 浏览 1371
- 评论(0)
在教学的过程中发现,很多学生一看到这个需求,都觉得很简单,然后立刻就开始动手写代码了,这并不是一个很好的习惯。如果你的第一直觉也是这样的,不妨耐心看到文章的最后。
大部分学生的思路:
1、首先建立一个main函数, main函数第一件事是提示用户输入三角形的三边,然后获取用户的输入(假设用户的输入都是整数的情况),用C语言来写,这一步基本上不是问题(printf和scanf),但是要求用java来写的话,很多学生就马上遇到问题了,java5.0及之前的版本不容易获取用户的输入。
点评:这样的思路做出来的程序只能通过手工方式来测试所有业务逻辑,而且这个程序只能是DOS界面版本了,要是想使用 ...
- 2008-09-08 09:45
- 浏览 1684
- 评论(0)
三角形的问题在很多软件测试的书籍中都出现过,问题虽小,五脏俱全,是个很不错的软件测试的教学例子。本文借助这个例子结合教学经验,从更高的视角来探讨需求分析、软件设计、软件开发与软件测试之间的关系与作用。
题目:根据下面给出的三角形的需求完成程序并完成测试:
一、输入条件:
1、 条件1:a+b>c
2、 条件2:a+c>b
3、 条件3:b+c>a
4、 条件4:0<a<200
5、 条件5:0<b<200
6、 条件6:0<c<200
7、 条件7:a==b
8、 条件8:a==c
9、 条件9:b==c
10、条件10:a2+b2==c ...
- 2008-09-08 09:35
- 浏览 2046
- 评论(1)
在工作之前接触的大多是小项目,而工作之后接触的都是十几万行以上的大中型项目。有了一定经验之后,对于不同规模项目的设计过程也有了一点自己的想法。
首先,项目的大小不是由代码规模决定的,项目的目标、受众的期望与数量、能产生的经济效益、管理层的重视程度、市场前景等才是项目规模评估的主要依据。然后进行人力、时间、预期目标的平衡。
在这里我不想谈软件工程方面的问题,而是想说一说对不同规模软件采取怎样的设计思路。
小型项目讲求的是快速开发,可以由最简单的,能满足用户最低需求的原型开始,然后经过一次或两次迭代(代码重构和功能添加)以完成目标系统。为了避免重构与代码复用的困难,在设计的初 ...
- 2008-09-08 09:30
- 浏览 1532
- 评论(0)
在我们每天的工作中,我们可能时时都在面对着对测试的批评和指责中。开发人员或管理人员试着用这种或那种的理由要求我们在测试过程中更负责,更仔细些。但是你认为他们对你的要求或指责都是正确抑或合理的吗?作为一 ...
- 2008-09-08 09:21
- 浏览 1090
- 评论(0)
虽然是希望这个论坛成为一个纯技术性论坛,但作为一名技术人员,我总是对未来的前景感到一阵阵悲哀。有感于对这个投票贴的名字,发表一点自身的感慨。 做为技术人员,大家都觉得工资高,工作稳定,还能学到很 ...
- 2008-09-06 10:17
- 浏览 1425
- 评论(2)
A active 积极
无论是在生活,还是工作上,他们都拥有积极奋发,进取乐观的心态。
B brave 勇敢
勇敢是大丈夫能屈能伸,是面对竞争对手时淡定从容,是用心征服浩瀚宇宙的磅礴大气。
C civilization 文明
你可以无视纪律,但你绝对 ...
- 2008-09-05 18:19
- 浏览 881
- 评论(0)
很多丢了工作的人急匆匆地马上开始寻找新工作。这通常是错误的。
这是完全自然的反应:你丢了工作,慌了手脚,立即开始给自己的关系网打电话、发电子邮件,并且应聘互联网上的招聘广告。而你的麻烦是,匆 ...
- 2008-09-05 18:13
- 浏览 909
- 评论(0)