定义 软件测试_软件调试和软件测试的定义 - CSDN
  • 如何定义软件测试

    2018-11-12 14:25:28
    虽然做测试好几年了,但是如果面试中被问到“什么是软件测试”,我可能一时回答不上来,或者说不知道怎么用合适的语言来回答。 在网上搜索一下,发现各种定义都有,五花八门,眼花瞭乱,越看越糊涂了。 可能很多人...

    虽然做测试好几年了,但是如果面试中被问到“什么是软件测试”,我可能一时回答不上来,或者说不知道怎么用合适的语言来回答。

    在网上搜索一下,发现各种定义都有,五花八门,眼花瞭乱,越看越糊涂了。

    可能很多人会有跟我一样的情况,所以这篇文章就专门说说这个问题。

     

    一、主流定义

    关于软件测试比较主流的定义是下面两种:

    1、经典定义

     软件测试(Software Testing):在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。

    2、IEEE(国际电子电器工程协会)定义:

    软件测试:使用人工或者自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。

     

    这两种定义有什么区别呢?

    经典定义中,主要指手工操作,只强调了测试程序、发现错误,有一定的局限性。

    因为软件包括程序、数据和文档,所以,软件测试并不仅仅是程序测试,还包括对数据和文档的测试。

    在IEEE定义中,补充了人工或自动的手段,加入测量软件系统的概念,补充了测试的目的。

     

    二、软件测试的发展历程

    软件测试是逐步发展完善起来的,我总结了主要的发展历程:

    从上图可以很清晰的看到软件测试的发展变化历程,从最开始的“调试”,一步步上升到软件开发的整个生命周期过程。

    其中提到的几本经典书籍都对软件测试研究的理论化和体系化产生了巨大影响,尤其是《软件测试的艺术》--作为软件测试领域的第一本最重要的专著,一直到现在还是非常好的入门书籍。

     

     

    三、软件测试的未来展望

    虽然近20年来软件测试技术发展很快,但是速度仍落后于软件开发技术,还面临着很大的挑战:

    1、随着软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题。

    2、面向对象的开发技术越来越普及,但是对应的测试技术却刚刚起步。

    3、对于分页式系统的整体性能、实时系统等,缺乏有效的测试手段。

    4、随着安全问题日益突出,信息系统的安全性如何进行有效的测试与评估,已经成为了世界性的难题。

     

    总体来说,软件测试行业还有很多问题要解决,还有很大的发展空间,对于测试人员的要求也会越来越高。

     

     

    展开全文
  • 软件测试定义、目的、原则、思维、流程 1.软件测试定义 2.软件测试目的 3.软件测试原则 4.软件测试思维 5.如何进行高效的测试? 80-20原则:80%的缺陷聚集在20%的模块中,经常出错的模块改错后还会出错。 6...

     

    目录

    软件测试的定义、目的、原则、思维、流程

    1.软件测试定义

    2.软件测试目的

    3.软件测试原则

    4.软件测试思维

    5.如何进行高效的测试?

    80-20原则:80%的缺陷聚集在20%的模块中,经常出错的模块改错后还会出错。

    6.软件测试流程

    7.一个测试工程师应该具备那些职业素质和技能

    8.面试


    软件测试的定义、目的、原则、思维、流程


    1.软件测试定义

    软件测试是在规定条件下(时间、金钱)对软件系统进行审核、运行和评估,是为了尽早发现软件缺陷,并确保缺陷修复,验证是否满足需求所进行的活动。测试只能证明缺陷的存在,不能证明缺陷不存在。

    2.软件测试目的

    软件测试目的是发现软件中的缺陷,提高产品质量。

    1. 发现尽可能多的缺陷,并不是说明软件中没有缺陷;
    2. 成功的测试在于发现迄今尚未发现的缺陷;
    3. 测试绝不是证明软件100%正确,即使经过了最严格的测试之后,仍然可能还有没被发现的错误潜藏在软件中。

    3.软件测试原则

    1. 测试工作是有计划的,应尽早开展测试工作;
    2. 尽量避免测试自己开发的程序;(指开发自己开软件自己测试)
    3. 测试只能证明缺陷存在,不能证明缺陷不存在;
    4. “彻底地测试”难以成为现实,要考虑时间、费用等限制,不允许无休止的测试;
    5. 测试都应该追溯到用户需求;
    6. 测试计划和测试执行应当进行分离;
    7. 软件缺陷具有免疫性,应尽可能采用多种方法和数据对软件进行测试

    4.软件测试思维

    1. 发现尽可能多的缺陷,不是为了说明软件中没有缺陷
    2.  成功的测试在于发现了迄今为止尚未发现的缺陷。--追求
    3. 交叉测试(测试人员所测试的模块交换测试,比如A本轮执行的M模块,B执行的N模块, 在下一次测试时 A执行N模块, B执行M模块。) 
    4.  测试越早,发现问题后解决问题的成本越小。
    5. 测试绝不是证明软件100%正确,即使经过了最严格的测试之后,仍然可能还有没被发现的错误潜藏在软件中。             

    5.如何进行高效的测试?

    测试工程师可以通过尝试一些持续集成手段,应尽早开展测试活动,还可以加入一些自动化技术,通过不断反复地测试来发现更多的缺陷。

    • 一个高质量的软件式设计和开发出来的,并不是测试出来的。

    80-20原则:80%的缺陷聚集在20%的模块中,经常出错的模块改错后还会出错。

    6.软件测试流程

    7.一个测试工程师应该具备那些职业素质和技能

    1. 掌握基本的测试基础理论;
    2. 本着找出软件存在的问题的态度进行测试,不要以挑刺的形象出现;
    3. 可熟练阅读需求规格说明书等文档;
    4. 以用户的观点看问题;
    5. 有强烈的质量意识
    6. 细心和责任心;
    7. 良好的有效的沟通方式(与开发人员及客户)
    8. 具有以往的测试经验能够及时准确的判断出高危险区在何处

    8.面试

    1. 什么是软件测试?软件测试的目的与原则?
    2. 你们公司的测试流程是怎样的?
    3. 一个测试工程师应该具备那些职业素质和技能
    4. 从项目的启动和发布过程,测试应该都做了哪些工作?
    5. 你对测试最大的兴趣在哪里?为什么?

     

    展开全文
  • 软件测试定义

    2017-12-11 23:10:56
    关于软件测试定义,不同学者有不同的观点,了解软件测试定义,对于日后在工作中是很有帮助的, 首先要明确测试的定义,所谓测试,就是以检验产品是否满足需求为目标。 而软件测试,自然是为了发现软件(产品)的缺陷而...

    关于软件测试的定义,不同学者有不同的观点,了解软件测试的定义,对于日后在工作中是很有帮助的,
    首先要明确测试的定义,所谓测试,就是以检验产品是否满足需求为目标。
    而软件测试,自然是为了发现软件(产品)的缺陷而运行软件(产品)
    比较标准的软件测试的定义是:在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估。

    • IEEE 标准的定义:使用人工或自动的手段来运行或测定某个系统的过程,其目的在于检验;它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。对软件测试还有一些不同的定义。
    • G.J.Myers给出的定义:“程序测试是为了发现错误而执行程序的过程”。这个定义被软件测试业界所认可,并经常被引用。但实际上,这样的定义还不能完全反映软件测试的内涵,它仍局限于“程序测试”。随后,G.J.Myers进一步提出了有关程序测试的3个重要观点,那就是:
      (1)测试是为了证明程序有错,而不是证明程序无错误。
      (2)一个好的测试用例在于它能发现至今未发现的错误。
      (3)一个成功的测试是发现了至今未发现的错误的测试。
      要完整地理解软件测试,就要从不同方面和视角去辨证地审视软件测试。概括起来,软件测试就是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中存在的各种问题—与用户需求、预先的定义不一致的地方。

    附注:

    1.软件测试的侠义观点和广义观点

    G.J.Myers给出了测试定义—“程序测试是为了发现错误而执行程序的过程”,实际上这是一个狭义的概念,因为他认为测试是执行程序的过程,也就是传统意义上的测试—在代码完成后,通过运行程序来发现程序代码或软件系统中错误。但是,这种意义上的测试是不能在代码完成之前发现软件系统需求及设计上的问题的,把需求、发现设计上的问题遗留到后期—最 终在代码中体现出来,这样就可能会造成设计、编程的部分或全部返工。需求阶段和设计阶段的缺陷在开发过程中会产生扩大效应,缺陷的严重性随时间发展越来越 严重,其结果会大大增加软件开发的成本、延长开发的周期等。这种狭义的观点主要是受软件开发瀑布模型的影响,而且非常不利于保证软件质量。
    延伸后的软件测试,被认为是软件测试的一种广义概念。这就引出了广义的软件测试的两个概念“静态测试”和“动态测试”。这样,静态测试和动态测试就构成了一个全过程的、完整的软件测试,而且静态测试显得更为重要。

    说明:静态测试的主要活动是评审,即通过对需求、设计、配置、程序和其他各类文档的审查来检验相应的内容是否满足用户的需求。由于静态测试不需要运行程序,所以测试对象是属于静态的.
    动态测试通过运行程序来发现软件系统中的问题,在程序运行过程中发现缺陷,它具有动态性。

    2.软件测试的辨证观点

    G.J.Myers的第2个观点是“测试是为了证明程序有错,而不是证明程序无错误”,引出了软件测试的另外一个争论:
    软件测试究竟是证明所有软件的功能特性是正确的,还是相反—对软件系统进行各种试探和攻击,找出软件系统中不正常或不工作的地方,就我个人理解,这两个方面都有一定道理,前者(证明或验证所有软件的功能特性是正确的)是从质量保证的角度来思考软件测试,后者(证明程序有错)从软件测试的直接目标和测试效率来思考,两者应该相辅相成。在后者的思想背景下,可以认为测试不是为了证明所有的功能都能正常工作,恰恰相反,测试就是为了找出那些不能正常工作、不一致性的问题,也就是说,测试的工作就是发现缺陷(detect bug ),即在软件开发过程中,分析、设计与编码等工作都是建设性的,唯独测试带有“破坏性”, 它想方设法发现软件所存在的问题。软件测试就是在这两者之间获得平衡,但对于不同的应用领域,两者的比重是不一样的。例如,国防、航天、银行等软件系统, 承受不了系统的任何一次失效,因为任何失效都完全有可能导致灾难性的损失,所以强调前者,以保证非常高的软件质量。而一般的软件应用或服务,则可以强调后 者,质量目标设置在“用户可接受水平”,以降低软件开发成本,加快软件发布速度,有利于市场的扩张。
    (1)验证软件是“工作的”,以正向思维方式,针对软件系统的所有功能点,逐个验证其正确性。
    (2)证明软件是“不工作的”,以反向思维方式,不断思考开发人员理解的误区、不良的习惯、程序代码的边界、无效数据的输入及系统的弱点.试图破坏系统、摧毁系统,目标就是发现系统中各种各样的问题。其代表人物就是上面多次提到的G.J.Myers。他强调,一个成功的测试必须是发现缺陷的测试,不然就没有价值。

    3.软件测试的风险观点

    测试被定义为“对软件系统中潜在的各种风险进行评估的活动”,这就引出软件测试的风险观点。软件测试自身的风险性是大家公认的,测试的覆盖率不能做到100%;另 外一方面,软件测试的标准有时不清楚,软件规格说明书是测试中的一个标准,但也不是唯一的标准。因为规格说明书本身的内容完全有可能是错误的,它所定义的 国内特性不是用户所需要的。所以,我们常常强调软件测试人员应该站在客户的角度去进行测试,除了发现程序中的错误,还要发现需求定义的错误、设计规格说明 书的缺陷。但是,测试在大多数时间/情况下是由工程师完成的,而不是客户自己来做,所以又怎么能保证工程师和客户想得一样呢?
    有人把开发比作打靶,目标明确,就是按照设计规格说明书去实现系统的功能。而把测试比作捞鱼,目标不明确,自己判断哪些地方鱼多,就去哪些地方捞:如果只捞大鱼(严重缺陷),网眼就可以大些、撒网区域相对比较集中(测试点集中在主要功能上)。如果想把大大小小的鱼都捞上来,网眼就要小,普遍撒网,不放过任何一块区域(测试点遍及所有功能)。
    在“风险”观点的框架下,软件测试可以被看作是一个动态的监控过程,对软件开发全过程进行检测,随时发现不健康的征兆,发现问题、报告问题,并重新评估新的风险,设置新的监控基准,不断地持续下去,包括回归测试。这时,软件测试完全可以看作是软件质量控制的过程。
    对应这种观点,产生基于风险的测试策略,首先评估测试的风险,每个功能出问题的概率有多大?根据Pareto原则(也叫80/20原则),哪些功能是用户最常用的功能(约占20%)?如果某个功能出问题,其对用户的影响又有多大?然后根据风险大小确定测试的优先级。优先级高的功能特性,测试优先得到执行。一般来讲,针对用户最常用的这20%功能(优先级高)的测试会得到完全地、充分地执行,而低优先级功能的测试(用户不常用的功能,约占80% )就可能由于时间或经费的限制,降低测试的要求、减少测试工作最,这样做风险性并不是很大。

    4.软件测试的经济学观点

    一个好的测试用例在于它能发现至今未发现的错误”, 这体现了软件测试的经济学观点。实际上,软件测试经济学问题至今仍是业界关注的问题之一。经济学的核心就是要盈利,盈利的基础就是要有一个清楚的商业性目 标。同样,商业性目标是否正确,直接决定了企业是否盈利。在多数情况下,软件测试是在公司内执行的。正是公司的行为目的,决定了软件测试含义或定义经济性 的一面。正如对软件质最的定义不仅仅局限于“和客户需求的一致性、适用性”,而且要增加其他的要求—“开发成本控制在预算内、按时发布软件、系统易于维护”等。
    软件测试也一样,要尽快尽早地发现更多的缺陷,并督促和帮助开发人员修正缺陷。原因很简单,缺陷发现得越早,所付出的代价就越低,例如在编程阶段发现一个需求定义上的错误,其代价将10倍于在需求阶段就发现该缺陷的代价。这就是从经济学的观点来说明测试进行得越早越好这样一个道理。

    5.软件测试的标准观点

    从标准观点来看,可以定义为“验证”和“有效性确认”活动够成的整体,即软件测试=V&V
    “验证”是检验软件是否已正确地实现了软件需求规格说明书所定义的系统功能和特性。验证过程提供证据表明软件相关产品与所有生命周期活动的要求(如正确性、完整性、一致性、准确性等)一致。相当于以软件产品设计规格说明书为标准进行软件测试的活动。
    “有效性确认”是确认所开发的软件是否满足用户真正需求的活动。一切从客户出发,理解客户的需求,并对软件需求定义和设计存疑,以发现需求定义和产品设计中的问题。主要通过各种软件评审活动来实现,保证让客户参加评审和测试活动。
    当然,软件测试的对象是产品(包括阶段性产品,如市场需求说明书、产品规格说明书、技术设计文档、数据字典、程序包、用户文档等),而质量保证和管理的对象集中于软件开发的标准、流程和方法等上。

    展开全文
  • 软件测试用例概述

    2020-02-14 16:37:22
    软件测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果,以便测试某个程序路径或核实是否满足某个特定需求。 二、测试用例的特征 1)有效性 测试用例的能够被使用,且被不同人员使用测试结果...

     


    目录

    一、测试用例的定义

    二、测试用例的特征

    三、四种常见的测试用例方法

    四、测试用例的编制要素

    五、测试用例的设计原则


     

    一、测试用例的定义

    软件测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果,以便测试某个程序路径或核实是否满足某个特定需求。

     

    二、测试用例的特征

    1)有效性

    测试用例的能够被使用,且被不同人员使用测试结果一致。

    2)可复用性

    良好的测试用例具有重复使用的功能。

    3)易组织性

    好的测试用例会分门别类地提供给测试人员参考和使用。

    4)可评估性

    从测试管理的角度,测试用例的通过率和软件缺陷的数目是软件产品质量好坏的测试标准。

    5)可管理性

    测试用例可以检验测试人员进度和工作效率。

    三、四种常见的测试用例方法

    1)等价类划分

    有效等价类:输入满足程序输入的要求(说明书),通俗的说就是正确的输入

    无效等价类:输入不满足程序输入的要求,即异常输入。

    eg:输入框要求输入1-10的数字

    有效等价类:可以输入1-10的数字来验证,如2、5、9等。

    无效等价类:输入1-10以外的任意字符验证,如0、11、字母、下划线、空格、特殊符号等。

    2)边界值

    边界值是对等价类的补充,对于边界更易出错。还是拿上面例子,可以输入0、-1、1、10、11等来判定是否超出范围。

    3)因果图

    因果图方法最终生成的就是判定表,适合于检查程序输入条件的各种组合情况。

    4)错误推测法

    基于经验和直觉推测出系统可能存在的错误,从而有针对性的设计测试用例的方法。

    四、测试用例的编制要素

    1)用例编号

    每个测试用例都有唯一的标识号,用来区别其它测试用例。

    2)测试模块

    对测试用例的描述,测试用例标题应该清楚表达测试用例的用途。

    3)用例标题

    指明并简单描述本测试用例是用来测试哪些项目或软件特性。

    eg:“ QQ登入输入密码错误时,软件的响应情况。”

    4)用例级别

    定义测试用例的优先级别,可以粗略地分为 “ 高 ” 和 “ 低 ” 两个级别。

    5)测试环境

    描述执行测试用例所需要的具体测试环境,包括硬件环境和软件环境。

    eg:

    硬件环境:计算机的具体配置。

    软件环境:操作系统(linux);数据库(MySQL)。

    6)测试输入

    用来执行测试用例的输入要求。这些输入可能是数据、文件或具体操作。

    7)执行操作

    执行本测试用例所需的每一步操作。

    8)预期结果

    描述被测项目或被测特性所希望或要求达到的输出或指标

    举个例子

    编号:

    001

    标题:

    系统登入测试用例

    测试环境:

    windows 10

    测试步骤:

    打开浏览器,输入系统网站,打开登录页面。

    用户名密码为空,点击登录按钮。

    输入用户名,密码为空,点击登录按钮。

    用户名为空,输入密码,点击登录按钮。

    用户名正确,密码错误,点击登录按钮。

    预期结果:

    成功打开登录页面。

    系统提示:用户名密码不能为空。

    系统提示:密码不能为空。

    系统提示:用户名不能为空。

    系统提示:用户名或密码错误。

    五、测试用例的设计原则

    1)保证测试用例的明确性

    测试人员要尽量避免测试用例存在含糊的因素,在测试过程中,测试用例的测试结果是唯一的

    2)保证测试用例的代表性

    尽量将具有相似功能的测试用例抽象合并。

    3)保证测试用例的简洁性

    测试用例简洁,可读性良好,测试过程目的明确,测试结果唯一。

     

     

    展开全文
  •  软件测试流程是一种抽象的模型,用于定义软件测试的流程和方法。众所周知,开发过程的质量决定了软件测质量,同样的,测试过程的质量将直接影响测试结果的准确性和有效性。软件测试过程和软件开发过程一样,都遵循...
  • 软件测试定义软件测试已有了行业标准(IEEE/ANSI ),1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或...
  • 软件测试定义和分类

    2018-08-14 18:11:54
    一、什么是软件 软件是计算机程序、程序所用的数据以及相关文档资料的集合。   二、软件的定义 ...使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定...2)软件测试为了检验产品是否...
  •  1)一种抽象的模型,用于定义软件测试的流程和方法。  2)测试过程的质量,将直接影响测试结果的准确性和有效性。  3)遵循基本原理,测试过程遵循软件工程原理,遵循管理学原理。  2 软件测试过程的基本...
  • 软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。行业标准IEEE/ANSI提出的软件工程术语中给软件测试下的定义是:使用人工或自动的...
  • 为什么要进行软件测试: 产品质量的保证控制成本的关键软件可靠性确认让企业具备国际竞争力 软件测试定义软件测试是由“验证(verification)”和“有效性确认(validation)”活动构成的整体。 ...
  • 对于刚接触测试工作的我来说,能在工作的闲暇给自己充电,学学新的工具、技术是极好的...软件测试概念 早期定义软件测试是对程序能够预期运行建立起一种信心;   经典定义: 测试是为了发现错误而执行程序的过
  • 软件测试定义:(为了发现程序中的错误而执行程序的过程)1为了发现程序员在开发中存在的代码以及逻辑错误2审核产品的完成是否符合用户的需求3提高客户的体验4交付更高质量的产品二。软件测试的过程阶段:1计划2设计...
  • 软件测试复习(部分) 概述 程序+文档+数据=软件 狭义的软件测试定义:为发现软件缺陷而执行程序或系统的过程 广义的软件测试定义:人工或自动地运行或测定某系统的过程,目的在于检验它是否满足规定的需求或...
  • 软件测试理论(1)

    2018-06-01 14:32:22
    软件测试定义 软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是...
  • 2006年11月06日 22:20:00 软件测试的起源与发展 软件测试的概念与定义 软件测试是伴随着软件的产生而产生的。早期的软件开发过程中,那时软件规模都很小、复杂程度低,软件开发的过程混乱无序、相当随意,测试的...
  • 软件测试定义软件测试是指人工操作或者利用软件自动运行的方式来检验软件是否满足规定的需求或者弄清楚预期结果和实际结果之间成差距的过程。 遵循的原则: 尽早原则:软件测试应当越早越好,最好是在需求...
  • 软件测试复习大纲

    2018-12-26 22:02:44
    文章目录概述计算机系统的软件可靠性问题软件质量软件可靠性度量软件故障定义错误故障失效软件测试与软件可靠性软件测试软件生存周期黑盒测试测试原则黑盒测试与白盒测试黑盒测试白盒测试软件测试过程单元测试静态...
  • 软件测试的含义: 早期而言, 在1973年Bill Hetzel提出,软件测试是对程序能够按预期运行建立起的一种信心。   经典定义 是1979年Myers提出,测试是为发现错误而执行程序的过程。   软件测试(Software ...
  • 软件工程之软件测试

    2015-10-13 14:33:18
     软件测试测试是对软件计划、软件设计、软件编码进行查错和纠错的活动(包括代码执行活动与人工活动),软件测试的经典定义是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否满足设计要求...
1 2 3 4 5 ... 20
收藏数 443,116
精华内容 177,246
关键字:

定义 软件测试