描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787302441496
编辑推荐
软件测试概念与实践软件测试入门指南Amazon 5星畅销书
内容简介
本书探讨了软件测试面临的主要问题,软件测试概念、原则和演化过程,涵盖了软件质量工程和测试概念、测试数据生成、测试部署、测试输出分析,以及软件测试管理。
本书特色
◆ 本书没有将软件测试当作一项孤立的技术,而是将其视为完整的软件验证和确认原则的组成部分。
◆ 根据边际效用递减规律,建议在同一个数学模型基础上开展程序测试和程序正确性验证工作,从而能够协调应用两种技术。
◆ 定义了软件缺陷概念和相对正确性概念,指出相对正确性是如何描述单调缺陷去除的。
◆ 将软件测试活动描述为一种面向目标的活动,研究了如何根据选择的测试目标指导测试活动。
◆ 涵盖了软件测试生命周期全过程,包括测试数据生成、测试预言设计、测试驱动设计,以及测试输出分析。
对软件质量和软件工程专业学生而言,《软件测试概念与实践》一书是非常有用的,因为本书为学生提供了职业生涯的基础知识,而且这些基础知识在各种原则不断演化的条件下也不会过时。
本书特色
◆ 本书没有将软件测试当作一项孤立的技术,而是将其视为完整的软件验证和确认原则的组成部分。
◆ 根据边际效用递减规律,建议在同一个数学模型基础上开展程序测试和程序正确性验证工作,从而能够协调应用两种技术。
◆ 定义了软件缺陷概念和相对正确性概念,指出相对正确性是如何描述单调缺陷去除的。
◆ 将软件测试活动描述为一种面向目标的活动,研究了如何根据选择的测试目标指导测试活动。
◆ 涵盖了软件测试生命周期全过程,包括测试数据生成、测试预言设计、测试驱动设计,以及测试输出分析。
对软件质量和软件工程专业学生而言,《软件测试概念与实践》一书是非常有用的,因为本书为学生提供了职业生涯的基础知识,而且这些基础知识在各种原则不断演化的条件下也不会过时。
目 录
前 言
前 言
软件工程是唯一一种产品测试成为主要技术,同时产品测试还得到了开发机构关注,并成为一项具有重要成本因素的工程原则。这种现状的产生来源于以下几点原因:● 软件测试获得了极大关注的首要原因是软件产品的规模和复杂性,其导致软件产品设计成为一种高风险且容易出错的工作。● 第二个原因是软件产品缺少一种标准开发过程,这就意味着产品质量无法通过过程控制进行保障,因此只能通过产品控制来保证产品质量。● 第三个原因是缺少能够通过静态产品分析来保证产品质量并能适应产品规模变化的实用方法,因此只能通过动态方法来保证产品质量。● 其他原因还包括:缺少一种通用的重用规则,缺少适用于不同产品规模且能够保证产品正确性的开发方法,以及在产品开发、维护、演化过程中无处不在的规约变更,等等。本书的主题是研究软件测试;与当前其他同一主题的众多书籍相比,本书在以下几个方面具有突出的特点:● 将软件测试视为软件质量保障的有机组成部分。我们将软件测试作为软件质量保障总体策略中的一个组成部分,而软件质量保障总体策略还包含了多项其他技术。边际效用递减规律(The law of diminishing returns)支持使用多种不同的互补性技术,而且需要将不同技术应用于能够得到最大投入回报的场合。这样,软件测试才能在一个包含了其他方法、更为广泛的语境下得到更深入的研究,而不仅仅是作为一个孤立的技术集进行研究。● 将软件测试视为静态分析的一种补充技术。在软件工程发展早期,针对有效性、可伸缩性、易用性等方面内容,人们对软件测试和静态程序分析的优势进行了丰富多彩的讨论。我们的立场是:某种技术在某些场合下能够发挥最大的效能,而在其他场合下可能就没有那么有效了;另一种常见的情况是,当我们感觉某种技术很难应用的时候,实际上往往不是因为技术本身存在问题,而是因为基于错误的规约类型使用了这项技术。为了保证产品正确性,不应该执着于选择某一种规约。实际上,我们应该将一种复杂的规约分解为不同的组成部分,然后将不同的组成部分映射到最为合适的技术。本书的第6章讨论了这个问题。● 将软件测试视为一个系统化的逐步完成的过程。早期的软件测试被视为一种证明程序缺陷存在的方法,而不是一种证明程序缺陷不存在的方法。实际上,这种看法是不恰当的,因为测试可以用于多种目的,这一点我们将在第7章讨论。无论这种看法是否合适,它都带来了两种后果:第一,人们认为软件测试的唯一目的是暴露缺陷、诊断程序和去除缺陷;第二,结果是,人们认为测试仅仅是生成测试数据的过程,特别是生成那些能够最大可能地暴露程序缺陷的测试数据。与这些看法不同的是,我们认为测试是一个多步骤的过程,包括识别与分析测试目标、测试数据生成、测试预言设计、测试驱动程序设计、测试部署、测试输出分析。我们将用不同的章节分别讲解这些内容。● 将软件测试视为一个形式化或可形式化的过程。对被测试的软件产品或软件产品规约而言,测试所需的分析工作量比较小,因此测试往往被视为一项可以随意执行的工作,并且无须考虑形式化问题。但是,我们却认为测试应该与静态程序分析一样严格。为有效地进行测试,测试人员必须具备软件规约、程序正确性、相对正确性(relative correctness)、缺陷的含义、缺陷去除等知识。这些内容将在第6章详细讨论。● 将软件测试视为一个面向目标的活动。我们认为,软件测试不仅是查找和去除缺陷,还可能具有更广泛的目标,包括诸如估计缺陷密度、估计可靠性、可靠性认证(certification)等。这些内容将在第7章详细讨论。本书的内容来自软件测试及质量保障课程的讲义,因此主要用于课堂使用。当然,本书也可以满足软件工程师的实际工作需要和软件工程研究人员的研究需求。本书分为五个主要部分,每个部分包括了3~4章内容,全书共计16章。● 第Ⅰ部分在软件工程的语境下比较宽泛地介绍软件测试,并且将探讨软件测试希望达到或确定的质量目标,还会探讨软件测试的生命周期。● 第Ⅱ部分介绍软件测试的数学基础,包括软件规约、程序正确性和程序验证、软件可依赖性概念以及软件测试分类学。一般的软件测试书籍很少像本书这样讨论规约、验证、可依赖性等内容。本书这样做是基于以下原因:• 首先,我们相信,在没有深入理解软件规约的前提下,是不可能研究软件测试的,因为软件规约规定了被测试程序的功能属性,而这些功能属性也是测试预言设计的基础。• 其次,当我们在产品认证(product certification)或者验收测试(acceptance testing)的语境下执行程序测试时,最受关注的是被测试的程序是否正确,而我们必须理解“正确”到底是指什么。• 第三,如果打算协同使用动态程序测试和静态程序分析,并且希望获得比单独用一种方法更为全面的结论,那么就必须在同一个数学模型下使用这些方法。• 第四,从一个程序中去除缺陷的行为是测试的核心任务,这个行为只能通过定义相对正确性(relative correctness)的属性来建立模型。相对正确性是指当程序中的缺陷被去除后,程序将更正确。因此,相对正确性只能在理解了(绝对)正确性属性的前提下进行定义。软件测试技术分类学是指将软件测试技术根据一组准则进行分类,特别是软件测试的目的:在指导软件测试的过程中,识别不同的软件测试目的是很重要的,不同的软件测试目的将影响测试生命周期的全部阶段,包括测试数据生成、测试预言设计,乃至测试部署和测试输出分析。● 第Ⅲ部分研究软件测试过程中最为吸引研究人员和测试人员的步骤,这个步骤常常被视为软件测试过程中唯一有意义的工作:测试数据生成。在这一部分中,我们将简要讨论测试数据生成的一些通用概念,然后研究测试数据生成的两种通用准则,也就是功能准则(第9章)和结构化准则(第10章)。我们在讨论测试数据生成时,不仅要考虑能够直接从初始状态映射到终止状态的简单程序,还要考虑与状态历史相关的程序,也就是输出依赖于输入历史的程序。● 第Ⅳ部分讨论软件测试生命周期中除了测试数据生成之外的其他阶段,包括测试预言设计、测试驱动程序设计、测试输出分析。测试预言(第11章)是从目标规约导出的,而目标规约是根据正确性的定义来定义的,并且取决于我们研究的是与状态无关的简单程序,还是存在内部状态的程序。测试驱动程序设计(第12章)取决于测试数据是脱机生成的,还是来自一个现有的介质,或者测试数据是根据某些概率法则而随机生成的。测试输出分析(第13章)则依赖于测试目的,分析内容可以是可靠性估计、可靠性验证、缺陷密度估计、以及产品验收等。● 第Ⅴ部分探讨软件测试管理方面的内容,包括软件度量(第14章)、软件测试工具(第15章),以及软件产品线测试(第16章)。在编辑本书内容材料的过程中,我们集中关注针对软件测试的重要方面的分析和建模,而不仅是研究和综述最新的软件测试研究内容,主要原因如下:● 本书主要是面向教学的,而非一部研究专著。● 在软件测试这一类充满活力的研究领域中,学生最好要掌握那些将在一段很长的时期内都能够发挥作用的基础概念,而不应该过分关注最新的技术。这是因为,从较长的时期看来,最新的技术总会过时。针对应该为学生在较短时间内提供操作技能还是应该为学生打下坚实的基础,并使他们在未来工作中具备适应能力的问题,在学术上存在着长期的争论。我们决定采取第二种策略。致谢我们在此向已经去世的Lawrence Bernstein教授致以特别的谢意,他邀请我们将本书纳入了他编纂的系列丛书,这套系列丛书十分出色。感谢学生对我们的不断支持,在我们多个学期不断精化和优化讲义内容的过程中,他们对我们给予了极大的包容。我们还要感谢Slim Frikha,这是一位来自法国巴黎理工学院(ParisTech)的实习生,他认真审查和评估了本书第15章实用的软件测试工具。在一定程度上,本书能够出版还需要感谢卡塔尔国家研究基金(Qatar National Research Fund)的资助,资助编号为NPRP 04-1109-1-174。本书作者对本书的内容负完全责任,其中的内容不代表QNRF的官方观点。
Fairouz TchierAli Mili
Fairouz TchierAli Mili
媒体评论
评论
书摘插画
评论
还没有评论。