毕业论文 (软件测试技术 - 黑箱测试 - 猜错法) 软件是与计算机系统运行有关的程序、数据和文件,是人类社会高度发展和人类智慧结晶的产物。近年来,随着国内外软件质量要求的提高,如何保证软件质量,深入研究软件测试技术和方法,提高软件可靠性已成为国内外重要的研究方向。软件开发的过程需要不断改进,而这个不断改进和修改的过程就是软件测试的过程。本文介绍了软件测试的一些相关知识,并介绍了黑盒测试技术的各种用例方法。关键词: 软件测试 软件测试方法 猜测错误 目录 第 1 章概述 41.1 背景 引言 4 第 2 章 软件测试概述 52.1 软件测试的定义和本质 52.1.1 软件测试的定义 52.1.2 软件测试的本质 52.2 软件测试的目的和原则 62.2.1 软件测试的目的 62.2.2 软件测试的原则 7 第 3 章 软件测试方法 93.1 黑盒测试方法 93.1.1 概述黑盒测试方法之 93.1.2 黑盒测试中的猜测错误 11 第 4 章 结论与展望 174.1 结论 174.2 展望18致谢19参考文献19第 1 章 概述1.1背景随着信息技术的飞速发展,软件在社会生活的各个方面发挥着越来越重要的作用。软件日益复杂和有限的开发周期导致软件质量往往得不到保证。
软件测试的目标不仅是发现软件中尽可能多的错误,而且还要测量和评估软件的质量,以提高软件的质量并验证软件系统是否满足用户的需求。软件测试伴随着软件的生成,而随着软件的生成和运行,必须有软件测试。在软件工业发达的国家,特别是美国,软件测试受到了软件从业者的广泛重视,形成了一个具有高度发展度的独立行业。在中国,软件测试的理论研究和软件测试的实践起步较晚。因此,无论是软件测试的理论水平还是测试行业,我国与国际先进水平都存在较大差距。但是,随着中国软件行业的快速发展和人们对软件质量的日益重视,软件测试正处于前所未有的快速发展时期,软件测试正逐渐在中国形成一个独立的行业。第 2 章 软件测试概述 2.1 软件测试的定义和精髓 2.1.1 软件测试的定义 (1) 测试是执行程序以发现程序中的错误的过程;(2) 一个好的测试计划是极有可能发现到目前为止尚未发现的错误的计划;(3) 成功的测试是发现直到现在才发现的错误的测试。测试的正确定义是 “执行程序以查找程序中的错误的过程”。这与一些人通常认为的“测试是为了证明程序是正确的”、“成功的测试是没有发现错误的测试”等完全相反。正确理解测试目标非常重要,这些目标决定了测试计划的设计。
如果进行测试是为了证明程序是正确的,那么设计出不容易暴露错误的测试方案;相反,如果测试是关于在程序中查找错误,我们将尝试设计一个最能暴露错误的测试解决方案。第 1 章 概述1.1 背景随着信息技术的飞速发展,软件在社会生活的各个方面发挥着越来越重要的作用。软件日益复杂和有限的开发周期导致软件质量往往得不到保证。软件测试的目标不仅是发现软件中尽可能多的错误,而且还要测量和评估软件的质量,以提高软件的质量并验证软件系统是否满足用户的需求。软件测试伴随着软件的生成,而随着软件的生成和运行,必须有软件测试。在软件工业发达的国家,特别是美国,软件测试受到了软件从业者的广泛重视,形成了一个具有高度发展度的独立行业。在中国,软件测试的理论研究和软件测试的实践起步较晚。因此,无论是软件测试的理论水平还是测试行业,我国与国际先进水平都存在较大差距。但是,随着中国软件行业的快速发展和人们对软件质量的日益重视,软件测试正处于前所未有的快速发展时期,软件测试正逐渐在中国形成一个独立的行业。第 2 章 软件测试概述 2.1 软件测试的定义和精髓 2.1.1 软件测试的定义 (1) 测试是执行程序以发现程序中的错误的过程;(2) 一个好的测试计划是极有可能发现到目前为止尚未发现的错误的计划;(3) 成功的测试是发现直到现在才发现的错误的测试。
测试的正确定义是 “执行程序以查找程序中的错误的过程”。这与一些人通常认为的“测试是为了证明程序是正确的”、“成功的测试是没有发现错误的测试”等完全相反。正确理解测试目标非常重要,这些目标决定了测试计划的设计。如果进行测试是为了证明程序是正确的,那么设计出不容易暴露错误的测试方案;相反,如果测试是关于在程序中查找错误,我们将尝试设计一个最能暴露错误的测试解决方案。2.2 软件测试的目的和原则2.2.1 软件测试的目的基于不同的立场,有两种完全不同的测试目的。从用户的角度来看,通常都是想通过软件测试来暴露软件中隐藏的 bug 和缺陷,以考虑产品是否可接受。从软件开发者的角度来看,希望软件测试是一个过程,表明软件产品没有错误,验证软件是否正确满足了用户的要求,并建立人们对软件质量的信心。因此,他们将选择导致失败概率较低的测试用例,并避免使用容易暴露程序错误的测试用例。同时,无意检测或排除手术中可能包含的副作用。像这样的现有测试对于改进和提高软件的质量没有任何价值。因为程序中经常会有很多意想不到的问题,可能会错过,很多隐藏的错误和缺陷得不到发现,会留在运行阶段,综上所述,软件测试的目的包括以下三点:测试是程序的执行过程,目的是发现错误, 无法证明程序的正确性,仅限于处理 受限的情况。
检查系统是否满足要求也是测试的预期目标。一个好的测试用例是发现尚未发现的错误,而成功的测试是发现错误的测试用例。2.2.2 软件测试的原则:软件测试的目标是用最少的时间和人力找出软件中各种潜在的错误和缺陷。如果测试成功实施,则可以发现软件中的错误。根据这种测试的目的,软件测试的原则应该是,软件测试应该像软件开发人员的座右铭一样尽早和持续地进行。在软件开发的各个阶段都坚持技术评审,做到在开发过程中尽早发现和预防错误,并及早克服所出现的错误,从而消除一些隐患,提高软件质量。测试用例应由两部分组成:测试输入数据和与之对应的预期输出。如果没有为测试输入数据给出预期的程序输出,则缺乏测试实践结果的基准,并且有可能将合理的错误结果误认为是正确的结果。程序员应该避免检查自己的程序,因为如果其他人测试程序员编写的程序,这可能会更客观、更有效,并且更有可能成功。在设计测试用例时,合理的输入条件和不合理的输入条件是异常的、关键的,并且可能会导致问题变化。因此,在测试时也必须测试软件系统处理非法命令的能力。在测试具有不合理输入条件的程序时,通常比使用合理的输入条件进行测试时,发现更多的错误。
在测试中要充分注意聚类。不要假设你已经发现了一些 bug,你不需要继续测试。应密集测试误差集群的分段,以提高测试投资的有效性。严格执行测试计划,杜绝测试的随意性。对于测试计划,要清楚,不要随意解释它们。每个测试结果都应该经过彻底的检查。这是最明显的原则之一,但经常被忽视。必须明确定义预期输出,必须仔细分析和检查测量结果,并且必须抓住关键点并暴露错误。测试计划、测试用例、错误统计和最终痤疮报告都妥善存储,以方便维护。第 3 章 软件测试方法 3.1 黑盒测试方法 3.1.1 黑盒测试方法概述 黑盒测试又称功能测试、数据驱动测试、基于规范的测试,是一种从用户角度出发,主要基于软件规范,测试程序功能和程序接口的测试。黑盒测试的基本思想是,任何程序都可以被视为从输入定义域映射到输出值域的功能过程。被测程序被认为是一个打不开的黑匣子,黑匣子的内容(实现过程)是完全未知的,只有要做什么。黑盒测试是一种重要的测试方法,作为测试软件功能的一种手段。它主要根据规范设计测试用例,不涉及程序的内部结构和内部特性,而只依靠被测程序的输入输出关系或程序的功能来设计测试用例。
从理论上讲,黑盒测试只有在使用详尽的输入测试并将所有可能的输入视为测试情况时才能检测到程序中的所有错误。实际上有无数的测试情况,不仅要测试所有合法的输入,还要测试那些不合法但可能是合法的输入。这样就不可能完全测试,所以我们需要进行有针对性的测试,并通过开发测试用例来指导测试的实施,确保软件测试是有组织的、循序渐进的和规划的。为了真正保证软件质量,黑盒测试行为必须是可量化的,而测试用例是量化测试行为的方法之一。它不仅必须评估“该程序是否做了它应该做的事情?还需要检查程序是否没有做不该做的 2 件事,还要检查程序在其他一些情况下是否正常。这些包括数据类型和数据值的异常等。以下方法:等价类划分、因果图法、边值分析法、猜测误差法、随机数法、决策表法等,都是从更广阔的角度进行黑盒测试。每种方法都试图涵盖更多的 “任何情况”,但每种方法都有自己的优势,这些方法的组合会产生一组更好的测试用例。以下是黑盒测试法中猜测法的示例:黑盒测试基于用户的观点,从输入数据和输出数据的对应关系出发,不涉及程序的内部结构。显然,如果外部特性本身有问题或规格规范错误,则无法用黑盒测试方法进行检测。
黑盒测试方法侧重于测试软件的功能需求,在程序界面上进行测试,主要发现以下错误:是否有功能错误,是否有残余功能。是否可以正确接收输入数据,是否可以在接口上产生正确的输出结果。性能是否能满足要求。是否存在数据结构错误或访问外部信息时出错。程序初始化和终止是否有错误。黑盒测试的对象在软件的开发过程中,需要测试的功能被划分为不同的层次,单个程序模块有其指定的功能,集成后的多个程序模块作为一个整体也有其指定的功能要求,模块的集成一般是一个持续的过程, 它将经历许多临时版本,直到形成最终的软件系统。因此,在模块集成期间,黑盒测试对象可以是单个程序,也可以是多个临时版本和最终软件。黑盒测试的优缺点 (1) 优点 黑盒测试不考虑软件的具体实现过程,在软件实现过程中进行更改时,测试用例仍然可以使用。黑盒测试用例可以与软件实现并行设计,从而缩短整体开发时间。测试人员和程序员可以由不同的人提供服务。从用户的角度进行测试,易于理解和接受。对于较大的代码单元,它非常高效。测试人员不需要了解实现的细节,包括特定的编程语言。帮助揭示任何规范不一致或不明确之处。生成测试数据很容易。适用于所有测试阶段。测试用例
的设计可以在规范编写后立即进行。(2) 黑盒测试是对程序界面的测试,所以有时候很难找出错误的具体原因和位置,还需要进行白盒测试,才能更详细地定位错误。黑盒测试的唯一一句话是软件的需求规范,它没有发现需求规范本身的问题。例如,由于需求规范中规定的需求考虑不周或缺乏明确性,需求规范无法充分准确地表达用户的需求,可能会大大降低黑盒测试的有效性。实际上,只有一小部分可能的输入被测试,一些代码没有被测试。没有清晰、简洁的规范,就很难设计测试用例。如果测试人员不知道开发人员已经执行了哪些测试用例,那么将存在不必要的重复测试。将有很多程序路径尚未经过测试。无法直接针对可能隐藏许多问题的程序的特定部分进行测试。如果规范不正确,则无法找到。进行充分性测试并不容易。3.1.2 黑盒测试中的猜测错误 猜测主要是实证的,基于人们对过去测试工作结果的分析和对所揭示缺陷规律性的直观推测。二分法搜索程序通常列出以下测试场景:检索到的表只有一个表或为空;表中的项目数正好是 2 的幂;表中的条目数大于 2 的 1 次方,依此类推。
这
充分发挥人的经验,在测试组内集思广益,方便实用,尤其是在软件测试基础较差的情况下,组织测试团队(也可以有外人)做出错误的猜测是一种有效的测试方法。例如,学生可以在标准化考试中批改他们的论文并生成分数报告。规范如下: 程序的输入文件由若干 80 个字符的记录组成,全部分为 3 组,如图所示: 标题:该组只有一条记录,其内容为成绩报告的名称。每个问题的标准答案:每条记录的第 80 个字符处都标有数字 2。分组记录:第一条记录:第 1 ~ 3 个字符为试题数量(1~999)。10~59 个字符是问题 1~50 的标准答案(每个有效字符代表一个答案)。第二条记录是问题 51~100 的标准答案。学生的答案:每条记录的第 80 个字符都标有数字 3。每个学生的答题纸都有几条记录。学生证:1~9 个字符 1~50 个问题的答案:10~59 个。当问题超过 50 个时,它们将在 、 和 “” 记录中给出。第一条记录:第 1~3 个字符是问题数(1~999)。10~59 个字符是问题 1~50 的标准答案(每个有效字符代表一个答案)。第二条记录是问题 51~100 的标准答案。学生人数不得超过 200 人,问题数量不得超过 999 人。
该程序的输出有 4 个报告: a) 按学号排列的成绩单,列出每个学生的成绩和排名。b) 按学生成绩排序的成绩单。c) 平均分和标准差报告 d) 试题分析。按问题编号排序,列出正确回答每个问题的学生百分比。答案 1:使用边界值分析方法分析和设计测试用例。输入和输出条件以及边界条件是分开考虑的。下表列出了输入条件和相应的测试用例。下表显示了输出条件和相应的测试用例。答案 2:使用猜错方法也可以补充一些测试用例的设计: 程序是否使用空格作为答案 在答案记录中混合标准答案记录 除了标题记录外,还有一些记录的最后一个字符不是 2 或 3 有两个学生的相同学号,题数为负数。经验教训: 使用边界值分析和等价类划分有助于设计一个也容易出现程序错误的代表性测试方案。但是,具有不同特征的不同类型的程序通常具有一些特殊的易出错情况。此外,有时程序在单独使用每组测试用例时工作,但这些输入数据的组合可以检测到程序中的错误。一般来说,即使是相对较小的程序也有很多可能的输入组合,因此依靠测试人员的经验和直觉从各种可能的测试场景中选择最有可能导致错误的输入组合是很重要的。 就是这样一种黑盒测试方法。
是一种根据经验和直觉推测程序中可能出现的错误,从而有针对性地设计测试用例的方法。猜错法的基本思想是列出程序中可能出现的错误和容易出错的特殊情况,并根据它们选择测试用例。猜错路测试总结:猜错法是一种根据经验和直觉,猜测程序中可能存在的各种错误,从而有针对性地设计测试用例的方法。猜错法的基本思想是列出程序中可能出现的错误和容易出错的特殊情况,并根据它们选择测试用例。经过大量的经验,以下情况在程序中容易出错:零输入数据或零输出数据往往容易出错;如果允许 或 的数量变化,则 或 的数量是 1 或 0 容易出错,依此类推。此外,还需要仔细分析程序的规范,并注意其中缺失或遗漏的部分,以便设计相应的测试计划,以检查程序员是否正确处理了这些部分。此外,经验表明,在过程中发现的错误数通常与尚未发现的错误数成正比。例如,在 IBM OS/370 操作系统中,用户发现的所有错误中有 47% 与系统 4% 的模块相关。因此,在进一步的测试中,重要的是要专注于测试那些已经发现大量错误的程序部分。第 4 章 结论和展望 4.1 结论 随着软件开发过程和开发技术的不断改进,软件测试理论和方法也在不断改进,软件测试是为了发现程序中的错误而执行程序的过程,测试的目的是以最少的时间和人力找出软件中潜在的错误和缺陷。
软件测试的方法多种多样,从是针对系统的外部功能还是针对系统的内部结构来看,分为黑盒测试和白盒测试。以下是我对两种测试方法的总结:黑盒测试:这种方法将测试对象视为黑盒,测试人员不考虑程序的内部逻辑结构和内部特性,而只根据程序的需求规范来检查程序的功能是否满足其功能描述。白盒测试:该方法将测试对象视为一个开箱,允许测试人员设计或选择测试用例,并使用程序的逻辑结构和相关信息来测试程序的所有逻辑路径。通过检查不同点的程序状态,确定实际状态是否与预期状态一致。软件的黑盒测试是指在软件的界面上进行测试。这样,就把测试对象当作一个黑匣子,测试人员根本不考虑程序的内部逻辑结构和内部特性,只根据程序的需求规范来检查程序的功能是否符合其功能描述。因此,黑盒测试也称为功能测试或数据驱动测试。黑盒测试主要旨在发现以下类型的错误:1) 功能错误或遗漏;2) 接口错误;3) 数据结构或外部数据库访问错误;4) 性能错误;5) 初始化和终止错误。软件的白盒测试是对软件程序细节的详细检查。这种方法将测试对象视为一个打开的盒子,它允许测试人员设计或选择测试用例,并使用程序内部的逻辑结构和相关信息测试程序的所有逻辑路径。
通过检查不同点的程序状态,确定实际状态是否与预期状态一致。因此,白盒测试也称为结构测试或逻辑驱动测试。白盒测试主要是对程序模块进行如下检查:1. 至少测试一次程序模块的所有独立执行路径。2. 对于所有的逻辑判断,“真”和“假”两种情况至少可以检验一次。3. 在 的边界和 边界内执行循环。4. 测试内部数据结构的有效性等。4.2 展望 鉴于过去十年 IT 行业良好的就业形势,越来越多的人在中国从事计算机及相关行业,许多对 IT 感兴趣的理科毕业生也转向攻读跨专业的计算机科学硕士学位。据权威网站统计,近一个月,北京市计算机科学与技术领域共有近 5000 个职位,其中包括 5000 个软件职位、3000 个测试职位和近 4000 个网络职位。2006年,中国软件外包行业对人才,尤其是研发人员的需求非常高。在北京市场,软件工程师、网络工程师、软件测试工程师仍然是最抢手的人才。所以,面对未来如此巨大的就业缺口,如何把握机遇,如何在竞争中脱颖而出,关键在于当下的努力和勤奋!“中国已将软件行业确定为发展的战略重点。
国务院副总理吴仪明确指出了软件行业在中国国民经济发展中的重要作用。这位前商务部长也曾公开表示支持加快发展软件产业,进一步缩小与国际先进软件水平的差距。实现这一目标的关键之一是大幅提高软件产品的质量,而这反过来又需要大量的软件测试人才。作为软件测试人才培养的主力军,IT 培训机构肩上的担子也将更加沉重。由此可见,软件测试未来发展空间很大,软件测试工程师的职业道路也很可期。致谢 本文是在黄玲老师的悉心指导和同学们的热情帮助下完成的。黄先生知识渊博、认真负责、耐心和平易近人;同学们热情高博,知识渊博,在写论文的过程中,他们提出了很多建设性的建议,给了我很多启发,并在一定程度上帮助了我,他们给了我一个积极的环境,让我能够按时完成这篇文章。感谢广东职业技术工程学院的各位领导和老师们,你们深厚的学术功底和孜孜不倦的高尚的教学道德将使我终生受益。感谢计算机信息系软件班的同学们的关心、友谊和帮助,感谢他们给了我美好而难忘的学习生活。最后,我要衷心感谢我的父母,他们一直默默地给予我的理解和支持,给了我勇敢面对困难的勇气和力量,使我能够顺利完成学业。
参考资料[1] 曹伟.清华大学出版社,2008 年 4 月。[2] 杜文杰, 景秀丽.软件测试基础课程[M] .中国水利水电出版社,2008 年 3 月。[3] 袁玉玉,《软件测试与质量保证》[M],北京邮电大学出版社,2008 年 6 月[4] 朱宏,《软件质量保证与测试》[M].科学出版社.1997[5] 郑仁杰 计算机软件测试技术[M].清华大学出版社 1992