软件测试基础

什么是Bug?

在我看来 BUG可以分为三种:错误、缺陷、故障、失效

    软件错误是指在软件生存周期内的不希望或不可接受的人为错误,其结果是导致软件缺陷的产生。
    软件缺陷是存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差。其结果就是软件运行于某一特定条件时会出现软件故障,这时称软件缺陷被激活。
    软件故障是指软件运行过程中出现的一种不希望或不可接受的内部状态,此时若无适当措施加以及时处理,便产生软件失效。
    软件失效是指软件运行时产生的一种不希望或不可接受的外部行为结果。

错误、缺陷、故障、失效 这几种bug的的分类在很多时候同样可以用来粗略的区分bug的优先级。 不过还是需要细分才能具体确定

什么是软件测试?为什么要进行软件测试?

软件测试:它应该是一种行为。检查软件的正确性,完整性,安全性和质量的过程。类似于流水线上的质检员。
换句话说,软件测试是一种实际输出与预期输之间的审核或者比较过程。
软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

软件测试的目的:

软件测试基于不同的立场,存在着两种完全不同的目的。从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑用户是否可以接受该产品。而从软件开发者角度出发,则希望测试成为表明软件产品不存在错误的过程,验证该软件已正确地实现了用户需求,确立人们对软件质量的信心。

软件测试的原则是什么?

(1)应该尽早地和不断地进行软件测试。由于原始问题的复杂性,软件的复杂性和抽象性,软件开发各个阶段的多样性,以及参加开发各种层次人员之间的配合关系等因素,使得开发的每个环节都可能产生错误。所以不能把软件测试看成是软件开发的独立阶段,而应该把它贯穿到软件开发的各个阶段中。坚持软件开发的各个阶段的技术评审,这样才能在开发过程中尽早发现和预防错误,把软件错误尽量在早期发现,杜绝某些隐患、提高软件质量。

软件测试不光是有测试人员来完成的,很多部门很多人员都可能会参与其中,举个简单的例子:开发人员需要做单元测试、开发之间需要联测、产品的一个确认性测试(是否满足自己的需求)、用户的使用性测试(终端用户在使用过程中,也会发现很多的问题,问题的本身可能不是程序的缺陷,而是产品的易用性,产品的友好型等等  用户的行为在软件测试中也有专门的测试类别,我们会在后面的介绍中指出)

(2)测试用例应该由测试输入预置条件和与之对应的预期输出结果这两部分组成。测试之前应该根据测试要求正确选取需要执行的测试用例。

(3)程序员应该避免检查/测试自己的程序。测试工作需要严格的作风,客观的态度和冷静的情绪。人们常常由于各种原因具有一种不愿否定自己工作的心态,认为揭露自己程序中的问题总不是一件愉快的事。这一心态就成为测试自己程序的障碍。另外,程序员对软件规格说明理解错误而引入的错误则更难发现。如果由别人来测试程序员编写的程序,可能会更客观、更有效、并且等容易取得成功。要注意的是,这点不能和程序调试相混淆。调试由程序员自己来做可能更有效。测试人员应该持有怀疑的态度,怼天怼地怼自己。 

(4)在设计测试用例时,应该包括合理的输入条件和不合理的输入条件。合理的输入条件是指能够验证程序正确的输入条件,而不合理的输入条件是指异常的临界的,可能引起问题异变的输入条件。在测试程序时,人们往往更多的考虑合法的和期望的输入条件,而忽略了不合法和意想不到的输入条件。事实上,软件在投入运行之后,用户的使用往往不遵循事先的约定,使用了一些意外的输入。如果开发的软件遇到这种情况时不能做出适当的反应,给出相应的信息,那么就容易产生故障,轻则产生错误的结论,重则导致软件失效。因此软件系统处理非法命令的能力在测试时也必须考虑。用不合理的输入条件测试程序时,往往比用合理的输入条件进行测试能够发现更多的错误。

(5)充分注意程序测试中的群集现象。测试中不要以为找到程序中的几个错误,问题就已经解决,不需要继续测试了。经验表明,测试后程序中残存的错误数目与该程序中中已发现的错误数目或检错率成正比。根据这个规律,应当对错误群集的程序段进行重点测试,以提高测试投资的效益。在测试软件程序时,若发现的错误越多,则残存在程序中的错误数目可能就越多,这种错误群集性现象,已为许多程序的测试实践所证明。例如美国IBM公司的OS/370操作系统中,47%的问题仅与该系统4%的程序模块有关。这种现象对测试很有用。如果发现某一程序模块比其它的程序模块有更多的程序错误趋向时,则应该化更多的时间和代价测试这个程序模块。

(6)严格执行测试计划,排除测试的随意性。测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选取,测试的控制方式和过程。系统的组装方式,跟踪规程,以及回归测试的规定等和测试结束准则。

(7)应对每一个测试结果做全面检查。这是一条最明显的原则,但常常被忽视。有些错误的征兆在输出实测结果时已经明显地出现了,但如果不仔细地全面检查测试结果,就会使这些错误被遗漏掉。所以在设计测试用例时必须对预期的输出结果明确定义,对实测结果仔细分析检查,抓住征候,充分暴露问题。测试是一个长久的过程,每个版本可能会迭代的测试很多次。从拿到版本的冒烟测试 到 版本稳定的第一轮测试,第二轮测试、bug的回归测试、到最后的验收测试及预发布、现网的冒烟测试

(8)妥善保存测试计划,测试用例,出错统计和最终分析结果,为维护提供方便。

(9)所有的测试应该追溯到用户需求。正如我们所知,软件的测试目标在于揭示错误。而最严重的错误(从用户角度上看)是那些程序不能满足用户需求的错误。

(10)测试应该从“小规模”开始,逐步转向“大规模”即渐增式build测试(测试V图![image](http://www.mscto.com/uploads/allimg/090123/0I10H208-0.jpg))。

  

时间: 2024-10-06 09:37:48

软件测试基础的相关文章

软件测试基础学习笔记

LR学习笔记 I.         软件测试基础 1.     软件的概念:程序与文档的结合. 2.     软件缺陷的概念:指计算机的硬件.软件系统或应用软件出现的错误,即为BUG. 1)     硬件错误原因:设计错误和硬件部件老化失效 2)     软件错误原因:软件开发企业设计错误引发 3.     软件生命周期的概念:从软件需求的定义.产生直到被废弃的生命周期. II.         软件测试的定义 1.     测试:包含硬件测试和软件测试 2.     测试用例:针对需求规格说明

软件测试基础知识

软件测试基础知识 1.  软件质量与软件测试 软件测试:在规定条件下对程序进行操作,以发现错误,对软件质量进行评估,包括对软件形成过程的文档.数据以及程序进行测试 软件质量:软件特性的总和,软件满足规定或潜在用户需求的能力 2.  软件测试与质量保证 软件测试只是质量保证工作中的一个环节,软件质量保证与软件测试是软件质量工程的两个不同层面的工作: 质量保证:通过预防.检查与改进来保证软件质量,采用全面质量管理和过程改进的原理来开展质量保证工作,主要关注软件质量的检查与测试,主要着眼于软件开发活动

测试用例与软件测试基础

一.软件测试基础 软件:简单的理解就是软件是一个集合,包含三个部分:程序代码.文档.数据 软件测试:软件测试就是为了发现错误而审查软件文档.检查软件数据和执行程序代码的过程.其目的在于在软件交付使用前充分发现缺陷并协助相关部门定位.解决缺陷,最后交付一个高质量的软件给用户.软件测试是软件生存周期的一个重要阶段,其主要任务是对被测对象,从初期的需求规格说明书,到最后的系统交付使用,整个过程进行检查.验证,以确保软件质量. 测试目的:基于不同的立场,存在着两种完全不同的测试目的.从用户的角度出发,普

《软件测试基础》读书报告:第四章 输入空间划分

<软件测试基础>读书报告 第四章 输入空间划分 为了更直接地使相同测试需求的值集合是恰好合适,划分输入空间的方式直接的根据输入值的参数来定义输入域.输入参数可能是方法的参数和全局变量,也可能是系统当前的表现状态,或者干脆是用户级给定的一个输入,这都要根据实际情况来划分.总输入域中划分出若干个区域,从这些区域中选出一些值来进行测试. 从参数的域开始,把每个域可能的值划到块里,从块中选取适当的值来组成测试用例的过程就是输入域建模的过程.对于输入与的划分,一般是基于程序相应的某周特性,程序的输入,程

第2章, 软件测试基础

2.1.1,什么是软件测试 软件测试的经典定义是在规定条件下对程序进行操作,以发现错误,对软件质量进行评估 60%以上的软件错误并不是程序错误,而是分析和设计错误,因此做好软件需求和软件阶段的测试工作就显得非常重要 2.1.2,什么是软件质量 软件质量定义:软件特性的总和,软件满足规定或者潜在用户需求的能力 2..1.3,软件测试与质量保证的区别 质量保证:质量保证的重要工作通过预防.检查与改进来保证软件质量,着重于软件的开发过程.步骤和产物 软件测试:对软件开发的过程产物以及软件进行剖析,软件

软件测试基础(1)

目录 l 软件测试基础 l 掌握软件测试相关的概念 l 掌握软件生命周期以及各阶段相关的工作 l 掌握测试的对象和原则 l 了解软件开发模型 l 掌握软件测试模型及各模型的特点 l 掌握软件测试的方法和类型 l  了解软件测试质量及测试与QA的关系.区别 测试相关概念 IT( information technology )信息科技和产业的意思 软件:一系列按照特定顺序组织的计算机数据和指令的集合程序+数据+文件 产品:能够供给市场,被人们使用和消费,并能满足人们某种需求的任何东西,包括有形的物

软件测试基础入门知识点

软件测试基础入门知识点 一.行业前景 前言 ? 程序员之间流传着这样一句话:有人喜欢创造世界,他们做了开发工程师,有人喜欢挑毛病,所以他们做了测试工程师. 什么是软件测试 软件测试就是利用手工或测试工具按照测试方案和流程对产品进行功能和性能测试,简单的来说就是为软件做"质检". 软件测试的重要性 ? bug 的经济损失: ? 软件 bug 对我们的生活,工作都会带来毁灭性的破坏.据悉,每年的软件 bug 会让整个市场经济带来近600亿美元的损失! 成立软件测试部门的原因 软件测试能提前

软件测试基础知识大全

1.   软件生命周期(SDLC)的六个阶段 1.问题的定义及规划       此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性. 2.需求分析       在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析.需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础."唯一不变的是变化本身.",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行. 3.软

软件测试基础(三) 测试阶段

主要有四个阶段:单元测试,集成测试,系统测试和验收测试. 单元测试 单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的.很明确的功能是否正确.通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为.单元测试通常也是由开发编写的(白盒测试的一种).可以使用的方法有静态代码分析,数据流分析,代码覆盖分析等. 集成测试 集成测试,也叫组装测试或联合测试.在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试.实践表明,

软件测试基础(第一阶段)

系统测试模块 一,测试基础 1,什么是软件测试(定义) 使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异, 这里的软件指:软件的源代码,用户手册,配置数据 这些都是软件的构成,都是我们的测试对象 2.软件测试的目的 发现被测对象和用户需求之间的差异(俗称,找bug) 通过测试活动发现并解决的缺陷,增加人民对被测对象的信心 通过测试,获取被测对象的质量信息,为决策提供数据依据 通过测试活动,预防缺陷,从而降低产品的风险 3.测试原则 测试