软件测试

概述

大浪淘沙三叠浪,龙门惊涛济沧海,拍岸唱晓。

果熟蒂落,配置管理,版本控制

上回说到”软件设计”,按理软件设计完之后应该谈谈程序编码,考虑到诸位看官都学过程序设计,都编过或大或小的程序,所以蔽人在此就不再赘言,以免耽误大家的宝贵时间.

今天着重要解决的问题是:什么是软件测试,为什么要软件测试,软件测试的原则,如何进行软件测试等.

1.什么是软件测试在软件程序编码完成之后,在软件投入使用之前要进行软件测试.何谓软件测试,简言之:软件测试是为了发现错误而执行程序的过程.也就是根据软件开发各阶段的规格说明何程序的内部结构而精心设计测试用例,用这些用例去运行程序以发现程序错误的过程.注意:软件测试的目的在于发现错误.

2.为什么要进行软件测试我们都有这样的经验,在一个程序写完之后,编译也通过,但程序运行的结果却与我们事先的想象不一样,或当程序执行了不符合规定的操作后,就使系统蹦溃或死机.这说明,在写程序的时候尽管考虑得似乎十分的周到,但程序里还或多或少的存在这样或那样的不足或错误(这些不足或错误就称为bug),软件测试就是尽可能地发现这些bug.一个软件不经过测试就投入运行是十分危险的,尤其在卫星发射等这些极为重要的场合,测试所投入的费用甚至远远超过软件开发.就曾经有因为软件测试的不合格而导致发射失败的例子.所以再次强调:做软件不等同于写程序,软件测试也是软件开发过程中必不可少的步骤之一.

3.软件测试的原则一.应当尽早和不断的进行软件测试.二.测试用例应由测试输入数据和预期输出结果两部分组成.(注意:测试用例包含输入和输出两部分).三.测试用例应包括合理的输入条件和不合理的输入条件.前者即使程序正常运行的条件,后者即可能引起程序非法操作的条件.四.程序员应避免检查自己的程序.因为父母总是疼爱自己的孩子.程序员总是在潜意识不愿意否定自己的劳动成果.五.注意测试中的群集现象.测试后程序中残存的错误数目与该程序中已发现的错误数目成正比.所以,不要在某个程序段中找到几个错误就误认为该程序段就没有错误而不再测试,相反该程序段更要集中精力测试.六.测试应该制订计划,严格按计划进行测试,避免测试的随意性.七.应对每一个测试结果做全面检查.有时出错的征兆已经在测试结果中出现了,但由于没有对测试结果进行仔细检查,而使这个错误成了漏网之鱼.八.应妥善保存测试计划,用例,错误记录和分析报告.

4.如何进行软件测试软件的测试过程有四个步骤:单元测试,集成测试,确认测试和系统测试.单元测试即对每一个单元模块进行测试.然后把测试过的模块组装起来进行集成测试,主要是对软件体系结构的构造进行测试.接着进行确认测试,检查软件是否满足了各种需求,以及配置是否合理安全.最后是系统测试,即把经确认测试后的软件放到实际运行环境中,与系统的其他构件一起进行测试.

单元测试时,有时需要为测试的模块编写辅助模块:驱动模块和桩模块.前者是用来调用被测模块;后者用来代替被测模块调用的子模块。

集成测试,又叫组装测试,分为两种:一次性组装和增殖式组装.一次性组装方式即把经单元测试后的模块一次性的组装成系统进行测试.增殖式组装方式即在模块组装的过程中,边组装边测试,每增加一个或几个模块就测试一次,最后组装成最后的系统,它又分为:自顶向下的增殖,自底向上的增殖,混合增殖等几种方式.

确认测试过程要做的工作包括:有效性测试,软件配置复审,验收测试和安装测试.在验收测试中常用的有α测试和β测试.α测试时,开发者坐在用户旁边,随时记录用户发现的问题.β测试则开发者不在测试现场,故是在开发者无法控制的环境下进行的测试,通常是由软件开发者向用户散发β版软件,然后收集用户的意见.

测试的方法大体可以分为两种:黑盒测试和白盒测试.黑盒测试即把测试的对象看成一个黑盒子,不考虑程序内部的逻辑结构和内部特性,主要在软件的接口处进行测试,主要测试软件的功能.黑盒测试的方法包括:等价类划分法,边界值分析,错误推测法,因果图,功能图等.白盒测试把测试对象看成是一个打开的盒子,程序内部的逻辑结构和其他信息对测试人员都是公开的.白盒测试的方法有:逻辑覆盖(语句覆盖,判定覆盖,判定-条件覆盖,条件组合覆盖,路径覆盖),基本路径测试等.

5.软件测试的对象正如做软件不等同于编程序一样,软件测试也不能只测试程序。因此软件测试的对象除了源程序外,还应包括软件开发各阶段的文档,如:需求规格说明书,概要设计规格说明,详细设计规格说明等.

小结:软件测试是为了查出软件中的不足或错误,它是软件开发过程中重要而必不可少的一个环节.

在软件完成后投入运行后,就进入了软件运行/维护阶段.今天要解决的问题是:什么是软件维护,为什么要进行软件维护,如何做到软件的可维护和易维护.

1.什么是软件维护在软件投入运行后对软件所进行的修改就是维护.

2.为什么要进行软件维护软件维护的原因可分为4类:改正性维护,适应性维护,完善性维护和预防性维护.改正性维护:在软件投入运行后,可能会暴露一部分在测试阶段没有发现的错误,为改正这些错误而对软件进行的修改就是改正性维护。适应性维护:由于软件运行的外部环境(软件,硬件)和数据环境等的变化而修改软件使之适应这些变化,就是适应性维护.例如:原先在DOS下开发的软件,现在要使之适用于windows而进行的修改。完善性维护:用户的需求是经常变化的,在软件使用过程中,用户会对软件提出新的功能和性能要求,为了满足这些新的要求而对软件进行修改,使之功能和性能得到完善.预防性维护:就是采用先进的软件工程方法对需要维护的软件或某部分软件重新进行设计,编码和测试,以提高软件的可维护性和可靠性等,为以后进一步改进软件打下基础.例如:有个软件原先是用结构化的思想编写的,现在为了提高软件的质量而用面向对象的方法重新设计和编写软件。

3.如何做到软件的可维护性软件的可维护性就是指软件维护的难易程度.要做到软件的可维护性要注意以下几点:建立明确的软件质量目标和优先级;使用提高软件质量的技术和工具,如:面向对象技术,软件体系结构思想等;进行明确的质量保证审查;选择可维护的程序设计语言;做好程序的文档等等.

参见:

测试管理工具列表大全(六)|

(转载)软件测试效率(test efficiency)

测试用例设计的误区

(转载)跨越软件测试术语“拦路虎”

三问TDD: 单元测试总是好的吗?

cwj007的专栏

软件工程十天入门(4)–软件测试http://www.clinux.org/forum/showthread.php?threadid=149

软工十天入门(5)–软件维护http://www.clinux.org/forum/showthread.php?threadid=159

Web下的整体测试

微软Web Application Stress 的使用体验

游戏测试过程

参见:

SCMLife(www.SCMLife.com)配置管理社区|

VMware ThinApp简明教程 - 制作单文件软件和便携软件 | VMvare Thinapp绿色注册版

Doc-O-Matic Professional 是一款制作在线帮助和用户手册的工具软件 |Doc-O-Matic 4中文字典,让你制作中文帮助文档更容易

Source Insight项目 |Slickedit 2008推出和SourceInsight更新 |Source Insight v.s SlickEdit 2007 |SlickEdit 设置点滴|SlickEdit 简体中文版 汉化包

Source-Navigator(TM)项目 |The Source-NavigatorTM IDE早期版本的项目 |源代码查看工具 Source Navigator 使用心得

tdump 如何得到动态链接库的输出函数(delphi tdump.exe)

Microsoft Spy++ v7.1 中文版

Windows的文件比较工具WinDiff

windows下的Linux命令工具程序包(UnxUtils.zip) Grep学习笔记

分析函数调用关系图(call graph)的几种方法

.net环境下分析程序调用关系图工具 dotnet产品调式-内存调试四 (使用 CLR Profiler (Allocation Profiler)来诊断内存泄露)

各类分析函数调用关系图的工具

《文件管理》(Araxis.Merge.Professional.v6.5)版本号2105 Araxis Merge 和 Beyond Compare 功能逐个数 TreeCompare(文件夹比较器) v1.0.0.68 (完整源码) 开放源代码的文本差异比较工具 代码比较文件比较工具粗略比较

关于安装程序制作的简明教程 Inno Setup Downloads

绿色软件论坛 各类软件的绿化制作、心得交流、实例学习。

推荐一款开源Bug跟踪软件给大家,BugTrack.net!

创建专业级别的类库使用文档——Sandcastle十一月份CTP发布

无处不在的重构-文档重构

将测试进行到底

有关windows程序自动升级的简单实现

FlickR如何控制外站的引用(图片盗链)

下午参加了UCDChina上海书友会的活动,也谈到了图片服务的防盗链问题。Hanson发过一篇牢骚: 门户网站的blog服务大部分都是禁止其他网站引用上传图片的,而最近国内专业的图片管理网站又拍也限制了图片的外链访问。从图片的hosting网站来说: 由于存储设备和存储机制的改进,图片存储一般不是太高的成本。主要的成本在于带宽:而很多盗链(寄生)网站经常利用免费服务存储一些色情图片,这些内容的流量非常大,如果不及时控制的话,非常容易形成破窗效应从而导致免费服务的成本失控。 同样是个人图片管理网站: FlickR是如何对图片流量进行成本控制的呢? 技术保障: 1 有基于用户帐号的月度流量控制。免费用户一个日历月的流量以前是有上限的20G(现在没了),上传文件的空间上限是20M(现在是100M); 2 FlickR的缺省供免费用户共享的图片大部分是较小幅面的缩略图:幅面一般在400像素以下,文件大小只有几k到几十k;收费用户才可以从外站引用原幅面的图; 3 用户帐户注册是要有邮箱校验的激活机制,防止自动/机器大量注册免费帐号; 用户协议上: 1 如果发现免费用户使用非原创内容,flickr是有理由删除内容并停用帐号的; 2 Flickr在对外共享图片的时候: 是要求加上链接指向原图(在FlickR上的)地址的,并且为图片插入很多Blog系统提供的API支持;

软件测试CMM(English教材).doc 81k