软件测试的新方法--灰盒测试
软件测试中的灰盒测试技术与方法

软件测试中的灰盒测试技术与方法为了确保软件质量和稳定性,软件测试是不可或缺的过程。
灰盒测试是软件测试的一种重要方法,结合了黑盒测试和白盒测试的特点,既测试了软件的功能和接口,又关注了内部结构和代码的实现。
本文将介绍软件测试中的灰盒测试技术与方法。
一、灰盒测试的定义和原理灰盒测试,又称半透明测试,是一种软件测试方法,测试人员在了解软件内部结构和代码的基础上进行测试,但并不了解其中所有细节和实现。
这种测试方法旨在测试软件的功能、接口和性能,并暴露潜在的缺陷和问题。
灰盒测试的原理是在黑盒测试的基础上,通过部分透明的测试技术,获取软件内部信息并分析其对功能和性能的影响。
通过测试人员对软件内部的了解,可以选择更加针对性的测试用例,提高测试的有效性和效率。
二、灰盒测试的常用技术与方法1. 静态分析技术静态分析是一种基于源代码或者二进制代码的分析技术,可以检测代码中的潜在问题和错误。
通过对代码的结构、语法和规范进行分析,可以发现代码中可能存在的漏洞和安全隐患。
与灰盒测试相结合,静态分析技术可以帮助测试人员更好地理解软件的内部结构和逻辑,并针对性地设计测试用例。
2. 数据流分析技术数据流分析是一种对程序中数据传递过程的分析技术,可以识别出可能的数据依赖关系和数据异常。
通过对程序中变量、参数和返回值的跟踪,可以发现潜在的数据错误和异常。
灰盒测试可以利用数据流分析技术,设计测试用例以覆盖各种数据路径,发现潜在的问题和缺陷。
3. 覆盖率分析技术覆盖率分析是一种测试评估技术,用于度量测试用例对代码的覆盖率。
通过统计测试用例执行过程中覆盖到的代码行数、分支数等指标,可以评估测试的全面性和深度。
在灰盒测试中,覆盖率分析技术可以帮助测试人员评估测试用例的质量和有效性,并发现未覆盖的代码区域。
4. 接口测试技术接口测试是一种对软件接口的测试技术,用于验证接口的正确性和稳定性。
在灰盒测试中,接口测试可以通过了解接口的调用方式、接口参数和返回值,设计测试用例以模拟各种接口调用情况,测试接口的正确性和可用性。
黑盒测试白盒测试灰盒测试的含义和用途

黑盒测试、白盒测试和灰盒测试的含义和用途在软件测试领域,黑盒测试、白盒测试和灰盒测试是常用的测试方法,它们分别针对软件测试的不同层面和角度,以保证软件质量和稳定性。
下面我们将详细介绍这三种测试方法的含义和用途。
黑盒测试黑盒测试又称为功能测试,是一种测试方法,测试人员只关注软件的功能和接口,而不考虑内部结构和代码实现。
在进行黑盒测试时,测试人员独立于开发团队,不知道软件内部的实现细节,主要根据需求规格说明书或用户手册设计测试用例,通过输入一些数据或使用特定功能,验证软件是否按照规格要求正常运行。
黑盒测试的主要优点是可以从用户的角度出发,验证软件功能是否符合用户需求,同时可以最大程度地模拟用户的真实操作,发现潜在的功能性问题。
但黑盒测试无法发现软件内部的逻辑错误和代码缺陷,需要结合其他测试方法进行综合测试。
白盒测试白盒测试又称为结构测试或逻辑测试,是一种测试方法,测试人员了解软件的内部结构和实现代码,以验证软件的逻辑正确性和代码覆盖率。
在进行白盒测试时,测试人员通常与开发团队紧密合作,通过分析代码逻辑、路径覆盖和代码覆盖率等指标设计测试用例,以揭示代码中的逻辑错误和潜在缺陷。
白盒测试的主要优点是可以全面检查软件的代码质量和逻辑正确性,发现潜在的代码缺陷和逻辑错误,提高软件的稳定性和可靠性。
但白盒测试需要测试人员具备较高的技术水平和对代码的深入理解,同时需要充分了解软件的内部实现细节,进行有效的测试。
灰盒测试灰盒测试结合了黑盒测试和白盒测试的优点,是一种兼顾功能和结构的测试方法。
在进行灰盒测试时,测试人员同时考虑功能测试和结构测试的要点,既验证软件的功能是否正常,又关注软件的代码质量和逻辑正确性。
灰盒测试通常需要测试人员具备较高的技术水平和综合能力,能够有效结合功能和结构测试方法,设计全面的测试用例,达到软件质量的要求。
灰盒测试的主要优点是可以综合考虑软件的功能和结构,全面验证软件的质量和稳定性,发现潜在的功能性和逻辑性问题。
软件测试中的黑盒测试和灰盒测试

软件测试中的黑盒测试和灰盒测试在软件开发过程中,软件测试是不可或缺的一步,可以保证软件的质量和稳定性,让用户获得更好的使用体验。
软件测试通常分为黑盒测试、白盒测试和灰盒测试三种,其中黑盒测试和灰盒测试被广泛应用。
一、黑盒测试黑盒测试又称功能测试或输入输出测试,其测试对象是软件系统的功能性和逻辑性。
测试人员不需要了解软件的内部结构和实现方式,通过输入一些特定的测试用例,检查输出是否符合预期结果。
黑盒测试主要侧重于测试用户需求,用例一般基于用户文档、需求文档、用户场景等。
通过黑盒测试,测试人员可以模拟用户的真实使用场景,找出软件中可能存在的缺陷和问题,从而提高软件的质量。
二、灰盒测试灰盒测试是介于黑盒测试和白盒测试之间的一种测试方法。
灰盒测试可以了解软件的一部分内部结构和实现方式,以更好地设计测试用例,并减少测试时间和测试成本。
灰盒测试常见的测试方法包括基于模型的测试、静态分析测试、动态分析测试等。
基于模型的测试是对软件模型进行测试,包括数据流图、状态转移图、边界值分析等。
通过精准的测试用例设计,能够提高测试效率和测试覆盖率,找出更多的缺陷。
静态分析测试则是对代码和文档进行分析,包括代码审查、需求分析等。
通过对文档的精准分析,找出可能存在的逻辑或功能性问题,提高软件的质量和可靠性。
动态分析测试是通过对软件的运行过程进行监控和分析,包括代码覆盖率分析、性能测试等。
通过动态分析测试,测试人员可以发现代码中存在的性能问题和潜在的缺陷,进一步提高软件的稳定性和可靠性。
三、黑盒测试和灰盒测试的区别1、测试对象不同:黑盒测试重点测试的是软件系统的功能性和逻辑性,而灰盒测试则是对软件的一部分内部结构和实现方式进行测试。
2、测试方法不同:黑盒测试只根据用户需求、文档和场景进行测试,而灰盒测试则可以通过对软件模型和代码的分析来设计测试用例。
3、测试覆盖率不同:灰盒测试可以提高测试覆盖率,发现更多的缺陷和问题,而黑盒测试则只能针对用户需求和场景进行测试,测试覆盖率相对较低。
黑盒测试和白盒测试灰盒测试的区别在哪

黑盒测试和白盒测试灰盒测试的区别在哪在软件测试领域,黑盒测试、白盒测试和灰盒测试是三种常见的测试方法。
它们各自有着不同的特点和适用场景,下面将从定义、原理、优缺点等方面对黑盒测试、白盒测试和灰盒测试进行简要介绍,并阐述它们之间的区别。
黑盒测试黑盒测试又称为功能测试,是一种测试方法,只关心软件的功能,而不关心软件内部结构或源代码。
黑盒测试将软件看作一个“黑盒子”,测试人员不知道软件的内部工作原理,只输入一些数据,然后检查输出是否符合预期。
黑盒测试主要检查软件的功能和用户界面是否符合规格说明书。
优点: - 测试人员和开发人员之间的独立性更强 - 可以模拟用户的真实操作情况 - 更加注重用户体验缺点: - 测试覆盖不够深 - 难以定位问题的根源 - 不适用于代码覆盖率高的情况白盒测试白盒测试又称为结构测试、逻辑测试或逻辑覆盖测试,是一种测试方法,通过检查软件的内部结构和源代码来进行测试。
白盒测试是基于代码的测试,测试人员需要了解软件的内部工作原理,以便设计测试用例。
白盒测试主要检查软件的逻辑覆盖率、路径覆盖率等。
优点: - 可以发现隐藏在代码中的逻辑错误 - 可以提高代码的质量和可靠性 - 可以提高测试覆盖率缺点: - 对测试人员的要求较高 - 测试周期较长 - 可能会暴露代码的安全问题灰盒测试灰盒测试是介于黑盒测试和白盒测试之间的一种测试方法,既关注软件的功能,又关注软件的内部结构。
测试人员对软件的内部结构有一定了解,但并不深入到源代码的层面。
灰盒测试主要是通过功能性测试和一些简单的代码检查来进行的。
优点: - 综合了黑盒测试和白盒测试的优点 - 测试人员能够更全面地评估软件的质量 - 测试范围更加广泛缺点: - 对测试人员的要求较高 - 测试周期较长 - 需要一定的技术能力综上所述,黑盒测试、白盒测试和灰盒测试各有各的优缺点,选择合适的测试方法应根据具体的软件项目需求来决定。
在软件测试过程中,可以根据实际情况灵活组合使用这三种测试方法,以提高测试的效率和质量。
黑盒测试和白盒测试灰盒测试的区别是什么

黑盒测试和白盒测试灰盒测试的区别是什么在软件测试领域,存在着不同类型的测试方法,其中最常见的包括黑盒测试、白盒测试和灰盒测试。
这三种测试方法在测试对象和测试者对系统的了解程度上有所不同,下面我们将详细探讨黑盒测试、白盒测试和灰盒测试之间的区别。
黑盒测试黑盒测试是一种测试方法,测试人员仅根据需求规格说明书和功能规格说明书来验证系统的功能是否符合预期。
在黑盒测试中,测试人员只关注系统的输入与输出,而不考虑系统内部的代码实现细节。
黑盒测试不关心软件的内部结构,而是关注是否符合用户的需求。
优点: - 测试者不需要了解系统的内部实现,只需通过接口和功能来测试。
- 测试者可以从用户角度出发,更加贴近用户需求。
缺点: - 无法发现系统内部错误,如代码逻辑错误、性能问题等。
- 需要编写大量的测试用例,覆盖率相对较低。
白盒测试白盒测试是一种测试方法,测试人员通过分析系统的内部结构和代码来设计和执行测试用例。
在白盒测试中,测试人员了解软件系统的内部工作原理,可以检查代码逻辑、路径覆盖率等。
白盒测试通常由开发人员或专业测试人员执行。
优点: - 能够发现代码中的逻辑错误、潜在的安全漏洞等问题。
- 可以提高代码覆盖率,帮助优化代码结构。
缺点: - 需要对系统的内部代码结构有较深的了解。
- 测试者需要花费较多时间设计和执行测试用例。
灰盒测试灰盒测试是介于黑盒测试和白盒测试之间的一种测试方法。
在灰盒测试中,测试人员既了解系统的外部功能,又具备一定程度的内部代码知识。
通过结合黑盒测试和白盒测试的特点,灰盒测试可以更全面地检查系统的功能和内部实现。
优点: - 综合了黑盒测试和白盒测试的优点,能够更全面地测试系统。
- 可以发现系统内外部的问题,提高测试覆盖率。
缺点: - 需要测试人员具备较强的软件开发和测试技能。
- 测试人员需要花费更多的时间和精力来执行测试。
综上所述,黑盒测试、白盒测试和灰盒测试在测试对象和测试方法上存在差异。
软件测试中的灰盒测试方法研究

软件测试中的灰盒测试方法研究灰盒测试(Grey-box testing)是软件测试方法的一种,它结合了黑盒测试和白盒测试的特点。
在灰盒测试中,测试人员具有部分关于被测试系统内部的信息,但并不了解其所有详细实现细节。
在本文中,我们将进行灰盒测试方法的研究。
灰盒测试的目的是发现软件中的错误、缺陷和安全问题,以确保软件质量和稳定性。
同时,灰盒测试还可以帮助测试人员了解被测试系统的结构和内部工作原理,从而更好地设计测试用例和覆盖系统的关键功能。
在灰盒测试中,测试人员通常具有一些关于被测试系统的信息,如系统的架构和设计文档,数据库结构等。
这些信息可以帮助测试人员理解系统的各个部分及其相互之间的交互方式。
灰盒测试包括以下几个主要方法和技术:1.静态代码分析:通过对源代码的静态分析,测试人员可以检测潜在的缺陷和错误。
这可以通过使用代码分析工具来完成,例如静态代码分析器和代码检查工具。
测试人员可以通过查看代码的逻辑和结构,以及检查变量的类型和范围来发现代码中的潜在问题。
2.数据流分析:数据流分析可以帮助测试人员确定数据在系统中的流动路径,以及在这些路径上可能出现的问题。
测试人员可以使用数据流分析工具来跟踪数据的传递和处理过程,并查找潜在的错误和不一致性。
数据流分析也可以帮助测试人员确定系统的边界条件和异常情况。
3.逆向工程:逆向工程可以帮助测试人员了解被测试系统的内部工作原理和数据结构。
通过反编译和分析系统的二进制代码,测试人员可以获取关于系统的结构和行为的详细信息。
这对于设计和执行测试用例非常有帮助,特别是在没有源代码或系统文档的情况下。
4.探索性测试:灰盒测试还可以结合黑盒测试的探索性测试方法,以发现系统中的未知错误和漏洞。
测试人员可以在有限的知识和资源下,随机或有目的地探索系统的各个方面,并观察和记录系统的响应和行为。
这种方法可以帮助发现系统中的一些隐藏问题和潜在的错误。
总的来说,灰盒测试是软件测试中一种非常有价值的方法。
软件测试中的灰盒测试技术与方法

软件测试中的灰盒测试技术与方法在软件开发过程中,测试是不可或缺的环节,它是验证软件是否符合预期功能的重要手段。
而灰盒测试作为软件测试的一种方法,结合了黑盒测试和白盒测试的优点,能够有效提高测试覆盖率和发现隐藏的缺陷。
本文将介绍软件测试中的灰盒测试技术与方法。
一、灰盒测试概述灰盒测试是介于黑盒测试和白盒测试之间的一种测试方法。
黑盒测试仅关注软件功能是否符合需求,不考虑内部实现细节;而白盒测试则深入分析软件的内部结构,测试代码的覆盖率等。
而灰盒测试在黑盒测试的基础上,通过了解部分内部结构和算法来选择测试用例,以增加测试覆盖度和发现潜在的缺陷。
二、灰盒测试技术1. 代码覆盖率分析代码覆盖率分析是灰盒测试中常用的技术之一。
通过分析已测试代码在执行过程中被覆盖到的程度,可以评估测试用例的有效性,提供测试覆盖率报告,从而帮助测试人员发现测试的空白点,进一步优化测试用例。
常见的代码覆盖率分析方法有语句覆盖、判定覆盖、条件覆盖等。
2. 数据流测试数据流测试是灰盒测试中另一个重要的技术。
它通过跟踪程序中的数据流动过程,识别潜在的数据缺陷和逻辑错误。
常用的数据流测试方法有数据定义使用测试、变量定义-使用测试、路径测试等。
3. 边界值分析边界值分析是一种针对输入和输出的测试方法,通过选取边界值来测试软件在边界情况下的行为。
在灰盒测试中,通过对程序内部边界值进行分析,选择测试用例进行边界值测试,可以有效地发现边界条件下的错误。
4. 异常处理测试异常处理测试是针对程序中异常情况的测试方法,通过模拟各种异常情况,验证软件对异常情况的响应和处理能力。
灰盒测试中,通过对程序内部异常处理代码的分析,选择适当的测试用例进行异常处理测试,可以检测出程序在异常情况下的错误和异常处理逻辑是否正确。
三、灰盒测试方法1. 基于模型的灰盒测试基于模型的灰盒测试是一种通过分析软件的模型结构来指导测试的方法。
通过建立软件模型,分析模型的内部结构和逻辑,选择测试用例进行测试,以提高测试覆盖率和发现隐藏的缺陷。
软件测试的新方法--灰盒测试

在测试领域众所周知存在黑盒测试和白盒测试,黑盒测试更多是在集成测试阶段进行只关注应用是否符合需求,而不关心代码设计的结构,方式,方法。
而白盒测试是针对黑盒测试提出的,前提是知道软件产品内部工作过程。
通过测试来检测软件产品内部动作是否按照规格说明书的规定正常进行,通常是在单元测试阶段进行。
那么做了这两种测试是否覆盖了软件测试的全部内容,即是否就能保证产品的质量呢。
其实是不一定的,或者说如果靠这两种方法来覆盖,投入的代价是比较大的。
譬如目前很火的OPEN API的测试,譬如对具备软件平台性质产品的测试。
因为通过黑盒手工测试是很难完成的,而白盒测试是在单元测试进行的,显然对产品的测试带来很大的局限性,它也无法测试到产品在集成过程中带来的问题。
那么灰盒测试就有它出现的必然性,这就是所谓存在就是合理的。
灰盒测试的特性:1. 灰盒测试通常是在集成测试前期进行的。
灰盒测试通常在程序员做完白盒测试之后(有些书上认为白盒测试是由测试人员进行的,我觉得纯属理想主义),在功能测试人员进行大规模集成测试之前进行的。
2. 灰盒测试是需要了解代码工程的实现的3. 灰盒测试是通过类似白盒测试的方法进行的,也就是说和白盒测试的方法是相同的,是通过编写代码,调用函数或者封装好的接口进行的。
4. 灰盒测试是由测试人员进行测试的。
灰盒测试和白盒测试的区别1. 测试的时段不同,白盒测试在单元测试阶段进行,灰盒测试在集成测试前期进行2. 测试的关注对象不同,白盒测试更关注内部实现是否按照规格说明书进行,灰盒测试除了需要关注白盒测试关注的内容还更多从业务层面去考虑问题,考虑更多的组合测试业务场景。
3. 范围不同,白盒测试更关注单个代码段,函数的正确性,灰盒测试的对象已经基本能完成一个完整的业务功能。
4. 灰盒测试的代码比较独立,不像白盒测试基本上和程序代码需要做到一一对应。
灰盒测试和白盒测试的相同点1. 目的相同2. 方法相同,都是需要通过代码来实现3. 对测试人员素质要求相同灰盒测试和黑盒测试的不同点1. 测试的方法不同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在测试领域众所周知存在黑盒测试和白盒测试,黑盒测试更多是在集成测试阶段进行只关注应用是否符合需求,而不关心代码设计的结构,方式,方法。
而白盒测试是针对黑盒测试提出的,前提是知道软件产品内部工作过程。
通过测试来检测软件产品内部动作是否按照规格说明书的规定正常进行,通常是在单元测试阶段进行。
那么做了这两种测试是否覆盖了软件测试的全部内容,即是否就能保证产品的质量呢。
其实是不一定的,或者说如果靠这两种方法来覆盖,投入的代价是比较大的。
譬如目前很火的OPEN API的测试,譬如对具备软件平台性质产品的测试。
因为通过黑盒手工测试是很难完成的,而白盒测试是在单元测试进行的,显然对产品的测试带来很大的局限性,它也无法测试到产品在集成过程中带来的问题。
那么灰盒测试就有它出现的必然性,这就是所谓存在就是合理的。
灰盒测试的特性:1. 灰盒测试通常是在集成测试前期进行的。
灰盒测试通常在程序员做完白盒测试之后(有些书上认为白盒测试是由测试人员进行的,我觉得纯属理想主义),在功能测试人员进行大规模集成测试之前进行的。
2. 灰盒测试是需要了解代码工程的实现的3. 灰盒测试是通过类似白盒测试的方法进行的,也就是说和白盒测试的方法是相同的,是通过编写代码,调用函数或者封装好的接口进行的。
4. 灰盒测试是由测试人员进行测试的。
灰盒测试和白盒测试的区别1. 测试的时段不同,白盒测试在单元测试阶段进行,灰盒测试在集成测试前期进行2. 测试的关注对象不同,白盒测试更关注内部实现是否按照规格说明书进行,灰盒测试除了需要关注白盒测试关注的内容还更多从业务层面去考虑问题,考虑更多的组合测试业务场景。
3. 范围不同,白盒测试更关注单个代码段,函数的正确性,灰盒测试的对象已经基本能完成一个完整的业务功能。
4. 灰盒测试的代码比较独立,不像白盒测试基本上和程序代码需要做到一一对应。
灰盒测试和白盒测试的相同点1. 目的相同2. 方法相同,都是需要通过代码来实现3. 对测试人员素质要求相同灰盒测试和黑盒测试的不同点1. 测试的方法不同。
2. 对测试人员要求不同。
灰盒测试要求比较强的编程能力。
3. 测试范围不同,关注的对象不同,黑盒测试是覆盖产品范围最广的测试,是灰盒测试无法取代的。
但是灰盒测试是可以被黑盒替代的,只是代价比较大,需要很多的测试用例。
灰盒测试和黑盒测试的相同点1. 目的相同2. 测试所处的时间段相近。
灰盒测试,确实是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。
灰盒测试结合了白盒测试和黑盒测试的要素.它考虑了用户端、特定的系统知识和操作环境。
它在系统组件的协同性环境中评价应用软件的设计。
灰盒测试由方法和工具组成,这些方法和工具取材于应用程序的内部知识和与之交互的环境,能够用于黑盒测试以增强测试效率、错误发现和错误分析的效率。
灰盒测试涉及输入和输出,但使用关于代码和程序操作等通常在测试人员视野之外的信息设计测试。
黑盒测试、白盒测试和灰盒测试的基本概念1. 黑盒测试黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。
"黑盒"法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。
"黑盒"法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。
实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
2. 白盒测试白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
3. 灰盒测试灰盒测试,确实是介于二者之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。
灰盒测试结合了白盒测试盒黑盒测试的要素.它考虑了用户端、特定的系统知识和操作环境。
它在系统组件的协同性环境中评价应用软件的设计。
灰盒测试由方法和工具组成,这些方法和工具取材于应用程序的内部知识盒与之交互的环境,能够用于黑盒测试以增强测试效率、错误发现和错误分析的效率。
灰盒测试涉及输入和输出,但使用关于代码和程序操作等通常在测试人员视野之外的信息设计测试。
浅谈灰盒测试自动化工具AppSight V2黑白双煞的困惑大家都知道,在软件开发生命周期过程中测试的地位举足轻重,它要占据这个软件开发生命周期中相当多的时间。
典型的测试方法即黑盒测试和白盒测试。
前者也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。
在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
后者则是也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行。
按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。
是否有了黑白双煞两种手段后就可以保证测试工作高效进行、应用软件又是否能够如期交付呢?我们先来看一组统计数据,如图1所示。
图1 测试发现问题后解决问题占用了更多的时间事实上,软件测试的根本目的是要提高应用软件的质量,保证其未来能够可靠稳定运行。
图1的数据也充分说明了,随着测试的深入,测试发现问题后的解决问题占用了更多的时间。
此时黑盒白盒都显然有些力不从心了。
白盒测试的代码扫描和应用功能挂不上钩,而黑盒测试的结果就是测试人员把自动化功能测试发现的问题通过缺陷跟踪系统提交给开发人员处理。
尽管好一点的测试人员会提供详细的测试用例文档和错误截图,但是开发人员仍不得不面临重现问题并不断的采用Trial & Error的手段来分析并解决问题。
很显然这种问题处理方式是手工方式且非常没有效率,会延缓问题的处理时间。
因此,我们需要另辟新径。
灰盒俱备,只欠工具所谓灰盒测试,是介于黑盒和白盒之间的,既关注输出对于输入的正确性,同时也关注内部表现的测试方法。
这种关注不像白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态。
它达到了某种目的,也就是一旦发现问题,可以迅速定位到黑盒中的某个分支,甚至代码级别。
灰盒测试在系统组件的协同性环境中评价应用软件的设计,从而增强了测试效率、错误发现和错误分析的效率,可以使得测试达到一个新的境界。
但是,灰盒测试对测试人员的要求也比较高,比如灰盒测试要求测试人员具有丰富的开发知识;需要测试人员更多地从业务层面去考虑问题,考虑更多的组合测试业务场景的能力;另外,很多时候问题的解决还需要很多外围知识,包括数据库层面上的分析能力、J2EE服务器内部的调用链分析等。
所以简单来看,灰盒测试是一个非常好的测试理念,但要真正发挥其作用,显然还需要相应的自动化工具这个东风来吹一下。
AppSight就是其中一种自动化工具。
AppSight概述AppSight由来已久,原来是有Identify开发的,之后被BMC公司收购但是独立运营。
灰盒测试方法灰盒测试中的精华就是通过灰盒测试能大大缩短解决测试中发现的问题的时间。
问题解决流程实际上包括了主要两个过程:“根源问题分析”和“问题解决”。
而以经验来看,以前我们的时间主要是耗费在“根源问题分析”上的,一旦问题被定位,解决问题相对是非常容易的。
为了进行根源问题分析,通常需要3个典型步骤来进行分析:信息收集、问题重现和问题分析可惜的是,目前来看,大多数开发人员都是手工来完成这些步骤的,即这个流程是非高效的手工方式,而且易于出错。
而AppSight这个工具的背后实际上是提供了一种问题解决思路的转变,也就是说需要把重现问题这个环节最大程度地消除,同时在发现问题的时候就尽可能的去收集问题信息和相关环境信息,并协助定位问题。
这于灰盒测试的方法实际上是不谋而合的,如图2所示。
图2 AppSight提供了一种问题解决思路的转变工作原理BMC AppSight应用解决方案事实上是通过采用类似于飞机上的“黑盒子”专利技术来使得测试后问题解决流程变得更加自动化。
这又完全不同于黑盒测试,原因在于飞机的黑盒子最终是可以被解剖的,而黑盒测试永远是面对一个黑盒子。
具体而言,AppSight系统会将问题发生的相关信息完整录制下来,包括问题发生的现场场景、信息及分析等,从而快速切入到问题根源。
如图3所示。
图3 AppSight系统会将问题发生的相关信息完整录制下来下面是运用AppSight工具的典型测试工作流程。
1. 测试人员通过AppSight提供的录制器进行测试录制,由于灰盒测试不同于黑盒测试中主要强调回归测试的概念,因此录制不需要添加校验点和进行参数化,整个过程相当简单易用。
2. 录制过程中,录制器会将所有过程录制成一个灰盒文件,同时包含了很多环境信息和录制中的性能数据信息:如数据库调用、Web访问信息、J2EE/.NET调用信息等,这些信息将有助于将来问题的分析。