08软件测试过程

一、软件测试的复杂性

1.完全测试是不现实的

在实际的软件测试工作中,不论采用什么方法,由于软件测试情况数量极其巨大,都不可能进行完全彻底的测试。所谓彻底测试,就是让被测程序在一切可能的输入情况下全部执行一遍。通常也称这种测试为“穷举测试”。
穷举测试会引起以下几种问题:
(1) 输入量太大;
(2) 输出结果太多;
(3) 软件执行路径太多;
(4) 说明书存在主观性。
E.W.Dijkstra的一句名言对测试的不彻底性作了很好的注解:“程序测试只能证明错误的存在,但不能证明错误的不存在”。由于穷举测试工作量太大,实践上行不通,这就注定了一切实际测试都是不彻底的,也就不能够保证被测试程序在理论上不存在遗留的错误。

2. 软件测试是有风险的

穷举测试的不可行性使得大多数软件在进行测试的时候只能采取非穷举测试,这又意味着一种冒险。比如在使用Microsoft Office工具中的Word时,可以作这样的一个测试:①新建一个Word文档;②在文档中输入汉字 “胡”;③设置其字体属性为“隶书”,字号为初号,效果为“ 空心”;④将页面的显示比例设为“500%”。这时在“胡”字的内部会出现“胡万进印”四个字。类似问题在实际测试中如果不使用穷举测试是很难发现的,而如果在软件投入市场时才发现则修复代价就会非常高。这就会产生一个矛盾:软件测试员不能做到完全的测试,不完全测试又不能证明软件的百分之百的可靠。那么如何在这两者的矛盾中找到一个相对的平衡点呢?

图4-1所示的最优测试量示意图可以观察到,当软件缺陷降低到某一数值后,随着测试量的不断上升软件缺陷并没有明显地下降。这是软件测试工作中需要注意的重要问题。如何把测试数据量巨大的软件测试减少到可以控制的范围,如何针对风险做出最明智的选择是软件测试人员必须能够把握的关键问题。


图4-1.png

图4-1说明了发现软件缺陷数量和测试量之间的关系,随着测试量的增加,测试成本将呈几何数级上升,而软件缺陷降低到某一数值之后将没有明显的变化,最优测量值就是这两条曲线的交点。

3.杀虫剂现象

1990年,Boris Beizer在其编著的《Software Testing Techniques》(第二版)中提到了“杀虫剂怪事”一词,同一种测试工具或方法用于测试同一类软件越多,则被测试软件对测试的免疫力就越强。这与农药杀虫是一样的,老用一种农药,则害虫就有了免疫力,农药就失去了作用。
由于软件开发人员在开发过程中可能碰见各种各样的主客观因素,再加上不可预见的突发性事件,所以再优秀的软件测试员采用一种测试方法或工具也不可能检测出所有的缺陷。为了克服被测试软件的免疫力,软件测试员必须不断编写新的测试程序,对程序的各个部分进行不断地测试,以避免被测试软件对单一的测试程序具有免疫力而使软件缺陷不被发现。这就对软件测试人员的素质提出了很高的要求。

4.缺陷的不确定性

在软件测试中还有一个让人不容易判断的现象是缺陷的不确定性。即并不是所有的软件缺陷都需要被修复。对于究竟什么才算是软件缺陷是一个很难把握的标准,在任何一本软件测试的书中都只能给出一个笼统的定义。实际测试中需要把这一定义根据具体的被测对象明确化。即使这样,具体的测试人员对软件系统的理解不同,还是会出现不同的标准。

二、软件测试的经济性

1.体现在测试工作在整个项目开发过程中的重要地位;
2.体现在应该按照什么样的原则进行测试,以实现测试成本与测试效果的统一。
软件工程的总目标是充分利用有限的人力和物力资源,高效率、高质量地完成测试。结合关于穷举测试具有不可行性,就可以理解为什么要在测试量与测试成本的曲线中选取最优测试点。

软件测试的充分性准则

1.对任何软件都存在有限的充分测试集合;
2.当一个测试的数据集合对于一个被测的软件系统的测试是充分的,那么再多增加一些测试数据仍然是充分的。这一特性称为软件测试的单调性;
3.即使对软件所有成分都进行了充分的测试,也并不意味着整个软件的测试已经充分了。这一特性称为软件测试的非复合性;
4.即使对一个软件系统整体的测试是充分的,也并不意味着软件系统中各个成分都已经充分地得到了测试。这个特性称为软件测试的非分解性;
5.软件测试的充分性与软件的需求、软件的实现都相关;
6.软件测试的数据量正比于软件的复杂度。这一特性称为软件测试的复杂性;
7.随着测试次数的增加,检查出软件缺陷的几率随之不断减少。软件测试具有回报递减性。

软件测试的流程

1.单元测试
2.集成测试
3.确认测试(功能测试)
4.系统测试
5.验收测试


测试流程图.png

在V模型中各个测试阶段的执行流程是:
单元测试是基于代码的测试,最初由开发人员执行,以验证其可执行程序代码的各个部分是否已达到了预期的功能要求;集成测试验证了两个或多个单元之间的集成是否正确,并且有针对性地对详细设计中所定义的各单元之间的接口进行检查;在单元测试和集成测试完成之后,通过确认测试验证软件的功能和性能及其他特性是否符合用户要求。接着系统测试开始用客户环境模拟系统的运行,以验证系统是否达到了在概要设计中所定义的功能和性能;最后,当技术部门完成了所有测试工作,由业务专家或用户进行验收测试,以确保产品能真正符合用户业务上的需要。


V模型.png

软件测试阶段的输入信息包括两类:

1.软件配置:指测试对象。通常包括需求说明书、设计说明书和被测试的源程序等;
2.测试配置:通常包括测试计划、测试步骤、测试用例以及具体实施测试的测试程序、测试工具等。
对测试结果与预期结果进行比较以后,即可判断是否存在错误,决定是否进入排错阶段,进行调试任务。对修改以后的程序要进行重新测试,因为修改可能会带来新的问题。
通常根据出错的情况得到出错率来预估被测软件的可靠性,这将对软件运行后的维护工作有重要价值。

软件测试的过程

1.测试计划
2.测试设计
3.测试执行
4.测试总结
1).软件测试计划
工作的输入是:软件测试任务书(或合同)和被测软件的需求规格说明。他们是开展软件测试计划的基础和依据。
测试的计划与控制是整个测试过程中最重要的阶段,它为实现可管理且高质量的测试过程提供基础。这个阶段需要完成的工作内容是:拟定测试计划,论证那些在开发过程难于管理和控制的因素,明确软件产品的最重要部分。
本阶段工作的输出是:软件测试计划。
2).测试设计
本阶段工作的输入是:软件测试计划。
软件测试设计阶段主要包含2个方面的工作:
一是测试用例的设计
二是测试用例的开发和实现。
本阶段要完成的主要任务如下:
在软件测试计划阶段中,通过测试需求分析得到细化后的每一个被测软件功能和特性,设计相应的软件测试用例。
针对每一个软件测试用例,确定其测试输入、测试步骤以及每一步骤的预期输出。
如果需要,开发和实现相应的测试输入。(自动化)
建立软件测试需求集和软件测试用例集之间的关联关系。(多对多)
本阶段工作的输出是:测试用例和测试数据。
3).测试执行
本阶段工作的输入是:测试用例和测试数据。
软件测试执行阶段,是在准备好的测试环境上依次执行各测试用例并详细记录每一步的测试结果。
本阶段主要完成的任务如下:
获得被测程序
获得指定的测试资源
执行测试用例
记录测试过程和测试输出数据。
本阶段工作的输出是:软件测试记录
4).测试总结
本阶段工作的输入是:软件测试计划、测试用例、软件测试记录。
软件测试总结阶段的主要工作是根据软件测试的执行情况,作出两方面的评价:
一是评价软件测试的效果;
二是评价被测试的软件。
本阶段主要完成的任务如下:

  1. 描述测试状态
  2. 描述软件状态
  3. 完成测试报告
  4. 保存测试文件
    本阶段工作的输出是:测试报告。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容

  • 一、 软件测试基本概念 1 bug的概念 bug类型:defect、fault、problem、error… pr...
    三口一个瓜阅读 3,677评论 0 12
  • 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程...
    欧尔麦特fffff阅读 4,643评论 1 41
  • -----转载----- 1、问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决? ...
    花开沉浮阅读 7,379评论 4 88
  • 1.问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 首先,将问题提...
    qianyewhy阅读 9,257评论 4 123
  • 1****、问:你在测试中发现了一个bug****,但是开发经理认为这不是一个bug****,你应该怎样解决?首先...
    一箭阅读 9,072评论 1 205