软件测试的基本方法和测试理论
- 格式:doc
- 大小:39.50 KB
- 文档页数:7
1.软件测试分类黑盒测试----指测试人员通过各种输入和观察软件的各种输出结果来发现软件的缺陷,而不关心程序具体如何实现的一种测试方法。
静态测试----指测试不运行的部分,例如测试产品说明书,对此进行检查和审阅.静态白盒测试-----指在不执行的条件下有条理地仔细审查软件设计,体系结构和代码,从而找出软件缺陷的过程。
有时称作结构分析。
动态测试----通过运行和使用软件进行测试。
探索测试----通常用于没有产品说明书的测试,这需要把软件当作产品说明书来看待,分步骤逐项探索软件特性,记录软件执行情况,详细描述功能,综合利用静态和动态技术来进行测试。
等价区间----指测试相同目标或者暴露相同软件缺陷的一组测试用例测试设计----提炼测试方法,明确指出设计包含的特性和相关测试。
如果要求完成测试还明确指出测试案例和测试程序,指定特性通过/失败的规则。
单元测试:最微小规模的测试;以测试某个功能或代码块。
典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。
这个工作不容易作好,除非应用系统有一个设计很好的体系结构; 还可能需要开发测试驱动器模块或测试套具。
累积综合测试:当一个新功能增加后,对应用系统所做的连续测试。
它要求应用系统的不同形态的功能能够足够独立以可以在全部系统完成前能分别工作,或当需要时那些测试驱动器已被开发出来; 这种测试可由程序员或测试员来做。
集成测试:一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作。
部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。
这种类型的测试尤其与客户服务器和分布式系统有关。
功能测试:用于测试应用系统的功能需求的黑盒测试方法。
这类测试应由测试员做,这并不意味着程序员在发布前不必检查他们的代码能否工作(自然他能用于测试的各个阶段)。
系统测试:基于系统整体需求说明书的黑盒类测试;应覆盖系统所有联合的部件。
端到端测试:类似于系统测试;测试级的“宏大”的端点;涉及整个应用系统环境在一个现实世界使用时的模拟情形的所有测试。
软件测试软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。
软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
软件测试是为了发现错误而执行程序的过程。
软件测试在软件生存期中横跨两个阶段:通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。
编码和单元测试属于软件生存期中的同一个阶段。
在结束这个阶段后对软件系统还要进行各种综合测试,这是软件生存期的另一个独立阶段,即测试阶段。
一、软件测试的目的软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。
第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。
第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。
如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。
因此软件测试的第三个目的是保证整个软件开发过程是高质量的。
软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确(Doing the right things right t the right time.)。
二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。
三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量(Qulity is deined s conormnce to requirements, not s “goodness” or “elegnce”.)。
四、质量也代表着它符合客户的需要(Qulity lso mens “meet customer needs”.)。
作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。
基本的测试理论和测试流程概述测试是软件开发过程中至关重要的一环,它能够帮助开发团队在发布软件之前发现和修复潜在的问题。
本文将介绍基本的测试理论和测试流程,帮助读者了解测试的基本知识和如何进行有效的测试。
测试理论1. 软件质量测试的目标是确保软件的质量。
软件质量包括以下几个方面:•功能性:软件是否能够按照需求规格说明书的要求正常运行?•可靠性:软件是否能够在各种条件下始终保持正常运行?•易用性:软件是否易于使用和理解?•效率:软件是否能够在短时间内完成任务?•移植性:软件是否能够在不同的环境和平台上运行?2. 测试级别测试可以分为不同的级别,每个级别关注不同的测试对象。
•单元测试:对软件的最小功能单元进行测试,如函数或模块。
通常由开发人员编写和执行。
•集成测试:将多个单元组合在一起进行测试,检查它们之间的交互是否正常。
•系统测试:对整个系统进行测试,检查系统是否能够满足用户需求。
•验收测试:在系统交付给客户之前进行的最终测试。
3. 测试方法测试可以使用不同的方法,根据不同的目标和需求选择合适的方法。
•黑盒测试:只关注输入和输出,不考虑内部结构和实现细节。
常用的黑盒测试方法包括等价类划分和边界值分析。
•白盒测试:关注内部结构和实现细节,设计测试用例来覆盖代码的各个分支和路径。
•灰盒测试:结合黑盒和白盒测试的方法,关注输入和输出,也考虑部分内部结构和实现细节。
测试流程测试流程是一系列有序的活动,旨在确保软件按预期工作。
以下是典型的测试流程。
1. 测试计划测试计划是测试过程中的第一步,它包括定义测试目标、测试策略、测试计划和测试资源。
•确定测试目标:明确要测试的软件功能和要达到的质量标准。
•制定测试策略:确定测试的范围、测试的级别和测试的方法。
•创建测试计划:制定测试的时间表和资源分配。
2. 测试设计在进行测试之前,需要设计测试用例来覆盖不同的测试情况和场景。
•确认测试需求:根据需求规格说明书和用户需求,确定要测试的功能和非功能需求。
软件测试的⼏种基本⽅法上次我们介绍了软件测试的基本概念及基本原则,今天我们就来看看软件测试的⼏种基本⽅法吧。
⾸先,当然就是我们⼤家熟悉的⿊盒测试和⽩盒测试,这是按是否查看程序内部结构分的。
其次,还可以按是否运⾏程序分为静态测试和动态测试,按阶段可分为单元测试、集成测试、系统测试、验收测试、回归测试。
除此之外还有冒烟测试、随机测试等。
接下来就详细介绍⼀下以上⼏种测试。
⼀、按是否查看程序内部结构分为:1、⿊盒测试(Black Box Testing):⿊盒测试是根据软件的规格对软件进⾏的测试,这类测试不考虑软件内部的运作原理,因此软件对⽤户来说就像⼀个⿊盒⼦。
简单来说,这种测试只关⼼输⼊和输出的结果,并不考虑程序的源代码。
⿊盒测试分为功能测试和性能测试:1)功能测试(function testing),是⿊盒测试的⼀⽅⾯,它检查实际软件的功能是否符合⽤户的需求。
包括逻辑功能测试、界⾯测试、易⽤性测试和兼容性测试。
2)性能测试(performance testing),软件的性能主要有时间性能和空间性能两种。
其中,时间性能主要指软件的⼀个具体事务的响应时间,⽽空间性能主要指软件运⾏时所消耗的系统资源。
2、⽩盒测试(White Box Testing):⽩盒测试是把测试对象看作⼀个打开的盒⼦。
利⽤⽩盒测试法进⾏动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。
与⿊盒测试相反,这种测试就要研究程序⾥⾯的源代码和程序结构。
⼆、按是否运⾏程序分为:1、静态测试(static testing):静态测试指测试不运⾏的部分,只是静态地检查程序代码、界⾯或⽂档可能存在的错误的过程。
例如测试产品说明书,对此进⾏检查和审阅.。
2、动态测试(dynamic testing):动态测试是指通过运⾏软件来检验软件的动态⾏为和运⾏结果的正确性。
具体操作就是输⼊相应的测试数据,检查输出结果和预期结果是否相符的过程。
测试理论是什么测试理论是软件测试领域研究的一个重要方向,旨在解决软件测试中的基本问题和关键挑战。
本文将介绍测试理论的基本概念、主要内容以及其在软件开发中的应用。
什么是测试理论测试理论是软件测试的核心理论体系,它关注测试的本质、目标、方法和规律。
通过对测试对象进行系统的研究和分析,测试理论能够提供有效的测试策略和方法,以确保软件的质量和可靠性。
测试理论主要包括以下几个方面:1.测试假设:测试理论基于一个重要假设,即软件中存在未发现的缺陷。
因此,测试的目的是通过检测和定位这些缺陷来提高软件的质量。
2.测试目标:测试的目标是发现尽可能多的缺陷,并帮助开发人员理解和修复这些缺陷。
同时,测试还应验证软件是否满足规定的需求和预期的功能。
3.测试方法:测试理论涵盖了各种测试方法,包括黑盒测试和白盒测试。
其中,黑盒测试侧重于根据需求规格和功能规约进行测试,而白盒测试则关注程序内部结构和代码覆盖率。
4.测试策略:测试策略是根据具体项目的特点和需求,制定测试计划和测试用例设计的方法论。
它包括测试的范围、测试的优先级、资源的分配等方面。
测试理论的应用测试理论在软件开发中具有重要的应用价值。
它可以帮助开发团队更好地理解测试的目标和方法,提供指导性的原则和规范。
以下是测试理论在软件开发中的一些具体应用:1.测试计划制定:测试理论提供了测试计划制定的基础。
它帮助开发团队确定测试范围、测试策略和测试方法,以确保测试的全面性和有效性。
2.测试用例设计:测试理论可以引导测试用例设计的过程。
它提供了各种测试方法和技术,如等价类划分、边界值分析等,帮助测试人员设计更全面、有效的测试用例。
3.测试执行和缺陷定位:测试理论指导测试人员如何执行测试用例并准确地定位缺陷。
它提供了各种测试技术和工具,如断言、代码覆盖率分析等,帮助测试人员确定缺陷出现的位置。
4.测试评估和改进:测试理论对测试的评估和改进也具有指导作用。
通过分析测试结果和缺陷报告,结合测试理论,开发团队可以对测试流程和方法进行持续改进,提高测试的效果和效率。
软件测试的基本原理与方法概述:软件测试是保证软件质量的重要环节,它通过验证软件系统是否满足用户需求、检测潜在错误和缺陷,并为开发人员提供改进和优化的方向。
本文将介绍软件测试的基本原理和方法,旨在帮助读者更好地理解和应用软件测试。
一、软件测试的基本原理1. 确定目标和需求:在开始测试之前,明确测试的目标和需求是至关重要的。
测试目标可以是发现缺陷、验证正确性或评估性能等,而需求确定了测试的范围和对象。
2. 找到合适的测试方法:不同的软件系统需要采用不同的测试方法。
常见的测试方法包括黑盒测试、白盒测试、灰盒测试等。
黑盒测试关注系统功能,不考虑内部结构;白盒测试则通过检查代码的内部结构来进行测试;而灰盒测试兼顾了功能和内部结构。
3. 设计合理的测试用例:测试用例用于验证软件系统的正确性和稳定性。
一个好的测试用例应当具备全面的覆盖性,涵盖系统的各个功能和边界条件,以最大程度地发现潜在的问题和缺陷。
4. 提前进行测试:软件测试应当尽早进行,尽量在软件开发的早期阶段就开始进行测试工作。
这样可以及早发现问题,减少后期修复的成本和风险。
二、常见的软件测试方法1. 黑盒测试:黑盒测试是不考虑系统内部结构的测试方法,测试者只关注系统的输入和输出,通过输入一组特定的数据,对输出结果进行验证。
黑盒测试通常包括等价类划分、边界值分析、因果图等技术。
2. 白盒测试:白盒测试是基于系统内部结构进行的测试方法,测试者了解软件的内部逻辑和代码细节,设计测试用例并执行测试。
常用的白盒测试方法有语句覆盖、判定覆盖、条件覆盖等。
3. 集成测试:集成测试是将已经测试过的模块组装成整个系统,并通过相互之间的接口交互进行测试。
这种测试方法主要用于检测模块之间的集成问题和接口错误。
4. 性能测试:性能测试是测试软件系统的性能指标,如响应时间、吞吐量、并发用户数等。
通过模拟实际工作负载,观察系统在不同负载下的表现,发现系统性能瓶颈并提供优化建议。
软件测试理论和方法
软件测试理论和方法是指在软件开发过程中,对软件产品进行验证和验证的过程和方法。
以下是一些常见的软件测试理论和方法:
1. 黑盒测试:在测试过程中,测试人员只关注软件的输入和输出,而不关心内部的实现细节。
测试人员根据软件的需求规范和功能描述,设计测试用例并执行测试。
2. 白盒测试:在测试过程中,测试人员对软件的内部结构和实现细节有深入的了解。
测试人员根据软件的设计和代码,设计测试用例并执行测试。
3. 单元测试:针对软件中的最小功能单元进行测试。
通常由开发人员在编写代码的同时进行。
4. 集成测试:在软件开发过程中,测试人员将各个独立的单元进行组合和测试,以验证它们之间的集成是否正确。
5. 系统测试:对整个软件系统进行全面测试,以验证系统的功能、性能、可靠性和安全性等方面是否满足需求。
6. 冒烟测试:在软件开发过程中,进行一系列的基本功能测试,以验证软件是否能够基本运行。
7. 性能测试:对软件的性能进行测试,包括响应时间、吞吐量、并发性等方面的测试。
8. 安全测试:对软件的安全性进行测试,以验证软件是否容易受到攻击或数据泄露等安全问题。
9. 自动化测试:使用自动化工具和脚本进行测试,以提高测试效率和准确性。
以上只是一些常见的软件测试理论和方法,根据软件的具体情况和开发过程,还可以采用其他不同的测试理论和方法。
软件测试的基本原理和实践方法软件测试是确保软件质量的关键活动之一。
通过测试,可以发现和修复软件中的错误和缺陷,提高软件的稳定性和可靠性。
本文将介绍软件测试的基本原理和实践方法,以帮助读者了解如何进行有效的软件测试。
一、软件测试的基本原理1. 软件测试的目标是发现错误和缺陷。
软件测试的目的在于检测软件在特定条件下的行为,从而发现其中的错误和缺陷。
通过测试,可以提高软件的质量和可靠性,减少用户在使用过程中遇到的问题。
2. 测试应尽可能早地开始。
软件测试应该尽早地开始,并贯穿整个软件开发的过程。
早期的测试可以尽早发现问题,并及时进行修复,以减少后期修复的成本和风险。
3. 全面性和充分性。
软件测试应该覆盖所有的功能、场景和边界条件,以确保软件在各种情况下的正确性和稳定性。
测试用例的设计要全面、充分,同时提供足够多的测试数据。
4. 自动化测试。
自动化测试是提高测试效率和精确性的重要手段。
通过使用自动化测试工具,可以快速执行测试用例,并生成详细的测试报告。
自动化测试可以减少测试过程中的人为因素,并提高测试的覆盖率。
二、软件测试的实践方法1. 单元测试。
单元测试是对软件中最小的可测单元进行测试,通常是函数或方法。
通过编写单元测试用例,可以验证功能的正确性和稳定性。
单元测试应该覆盖所有可能的输入和输出情况,以确保各个单元的正确性。
2. 集成测试。
集成测试是测试不同模块之间的交互和协作。
通过集成测试,可以发现不同模块之间的接口问题和整体性能问题。
在集成测试中,应该模拟实际的使用场景,并测试各个模块的功能和性能。
3. 系统测试。
系统测试是对整个软件系统进行测试,验证软件在各种条件下的功能和性能。
系统测试应该覆盖所有的功能和场景,包括正常情况下的操作、异常情况下的处理等。
在系统测试中,可以使用自动化测试工具来提高测试效率。
4. 验收测试。
验收测试是在软件交付给用户之前进行的最后一轮测试。
验收测试的目的是验证软件是否满足用户需求,并符合预期的质量标准。
软件测试的理论和方法随着互联网技术的迅速发展,软件产品在人们的日常生活中起到了重要的作用,同时也给软件测试带来了巨大的压力和挑战。
软件测试是在保证软件质量的前提下,通过检验和验证软件是否符合用户需求和设计规范的一系列活动。
本文就软件测试的理论和方法进行深入探讨,分别从以下三个方面进行分析:软件测试的基本理论、软件测试的方法以及软件测试的流程与实施。
一、软件测试的基本理论研究1.软件测试的概念软件测试是指为了检验软件是否能满足用户需求而进行的一系列活动,包括软件测试计划制定、测试用例设计、测试执行、测试结果分析和测试报告编写等一系列活动。
2.软件测试的目标软件测试的主要目标包括:发现软件缺陷、确保软件质量、保证软件符合用户的需求、优化软件性能、验证软件是否达到预期目标等。
3.软件测试的原则软件测试的原则主要包括:早期测试、持续测试、全面性测试、自动化测试、模块化测试等。
这些原则可以帮助测试团队提高测试效率,提高测试质量。
二、软件测试的方法探讨1.黑盒测试方法黑盒测试是一种基于软件功能特征的测试方法,测试人员只需关心输入和输出,而不关心程序内部的逻辑和代码。
黑盒测试方法可以帮助测试人员更加关注用户需求和软件的功能特性,同时对于大型软件系统,缩短测试时间也是非常重要的。
2.白盒测试方法白盒测试是一种基于软件内部逻辑和代码的测试方法,测试人员需要对程序的内部结构有一定的了解。
白盒测试方法可以帮助测试人员检查代码中的错误和缺陷,并对软件进行优化和调试。
3.灰盒测试方法灰盒测试方法就是介于黑盒测试和白盒测试之间的一种测试方法,它需要测试人员对程序的内部结构进行一定的了解,同时也需要关注软件的功能特性和用户需求。
三、软件测试的流程与实施1.测试计划制定测试计划是软件测试的必要环节,它可以帮助测试团队制定测试目标、测试范围、测试方案和测试标准等,以确保软件测试的有效性和质量。
测试计划需要包含测试的工具、设备、资源、时间和人员等细节。
测试基本理论和方法有哪些测试是软件开发过程中不可或缺的一个环节,它能够帮助开发团队发现问题、改进软件质量,并确保软件达到预期的需求和功能。
为了有效地进行测试,我们需要掌握一些基本的测试理论和方法。
本文将介绍几个常用的测试基本理论和方法。
一、黑盒测试黑盒测试是一种测试方法,它关注于测试软件的功能和接口,而不考虑软件内部的实现细节。
测试人员基于需求和规格说明书进行测试,通过输入一些合法和非法的输入来验证软件的输出是否符合预期。
黑盒测试的目标是发现功能性错误和接口问题。
黑盒测试使用的方法主要包括等价类划分、边界值分析、因果图等。
等价类划分是将输入数据划分为若干等价类,从每个等价类中选择一个测试用例进行测试。
边界值分析是选取接近边界的测试用例进行测试,因为边界值往往是造成错误的潜在点。
因果图是一种图形化测试设计技术,可以帮助测试人员识别系统的逻辑关系和潜在错误。
二、白盒测试白盒测试是一种测试方法,它关注于软件内部的实现细节,通过检查和测试代码来验证软件的正确性和稳定性。
测试人员需要了解软件的结构和实现,编写测试用例来执行代码路径覆盖和逻辑覆盖等。
白盒测试使用的方法主要包括语句覆盖、判定覆盖、条件覆盖等。
语句覆盖是确保每一条代码语句都至少被执行一次。
判定覆盖是确保每个条件语句的真值和假值至少被执行一次。
条件覆盖是确保每个条件的每个可能取值至少被执行一次。
三、性能测试性能测试是一种测试方法,它关注于软件在不同负载条件下的性能表现。
主要目的是评估软件的性能特征,如响应时间、吞吐量、并发性能等。
测试人员会创建负载场景,并使用性能测试工具来模拟多用户同时访问系统,以验证系统在高负载下的性能和稳定性。
性能测试常用的方法包括负载测试、压力测试、容量测试等。
负载测试是模拟真实的用户操作来测试系统的负载能力。
压力测试是在负载达到峰值时测试系统的稳定性和可靠性。
容量测试是评估系统在不同负载条件下的性能极限。
四、安全测试安全测试是一种测试方法,它关注于揭示软件存在的安全漏洞和脆弱点。
动态黑盒测试不深入代码细节的软件测试方法。
常被称为行为测试,因为测试的是软件在使用过程中的实际行为。
首先,从产品说明书获知测试对象的软件的输入和应该得到的输出。
接下来,开始定义测试案例。
测试案例:指进行实验用的输入,以及测试软件用的程序。
选择测试案例是软件测试员最重要的任务。
不正确的选择可能导致测试量过大或者过小,甚至测试目标不对。
准确评估风险,把不可穷近的可能性减少到可以控制的范围是成功的诀窍。
测试基本方法:通过测试vs 失败测试通过测试:确认软件至少能做什么,而不考验其能力。
失败测试:纯粹为了破坏软件而设计和执行的测试案例,也称为迫使出错测试。
蓄意攻击软件的薄弱环节。
在设计和执行测试案例时,总是首先进行通过测试。
在破坏性试验之前看看软件基本功能是否实现是很重要的,否则在正常使用软件时就会奇怪为什么有那么多的软件缺陷。
常见的测试案例就是设法迫使软件出现错误提示信息。
产品说明书可能会给出这样的功能要求,针对这个问题的测试可能是通过测试也可能是失败测试。
可能两者都是。
不用去刻意区分,重要的是找到软件缺陷!选择测试案例:等价分配等价分配:是指分步骤地把过多(无限)的测试案例减小到同样有效的小范围的过程。
也称等价划分。
等价分配技术提供了一个选择哪些数值、舍弃哪些数值的系统方法。
等价类别或者等价区间是指测试相同目标或者暴露相同软件缺陷的一组测试案例。
在寻找等价区间时,想办法把软件的相似输入、输出、操作分成组。
这些组就是等价区间。
等价分配的目的是把可能的测试案例组合缩减到仍然足以测试软件的控制范围。
因为选择了不完全测试,就要冒一定的风险。
如果为了减少测试案例的数量过度进行等价分配,测试的风险就会增加。
另外,等价区间的划分没有一定的标准,只要足以覆盖测试对象就行了。
数据测试软件由数据(包括键盘输入、鼠标单击、磁盘文件、打印输出等等)和程序(可执行的流程、转换、逻辑和运算)两个最基本的要素组成。
对数据进行软件测试,就是在检查用户输入的信息、返回结果以及中间计算结果是否正确。
主要根据下列原则来进行等价分配,以合理减少测试案例:边界条件、次边界条件和无效数据。
1. 边界条件测试程序在处理大量中间数值时都是对的,但是可能在边界处出现错误。
比如数组的[0]元素的处理。
想要在Basic中定义一个10个元素的数组,如果使用Dim data(10) As Integer ,则定义的是一个11个元素的数组,在赋初值时再使用For i =1 to 10 ...来赋值,就会产生权限,因为程序忘记了处理i=0的0号元素。
边界条件是指软件计划的操作界限所在的边缘条件。
数据类型:数值、字符、位置、数量、速度、地址、尺寸等,都会包含确定的边界。
应考虑的特征:第一个/最后一个、开始/完成、空/满、最慢/最快、相邻/最远、最小值/最大值、超过/在内、最短/最长、最早/最迟、最高/最低。
这些都是可能出现的边界条件。
根据边界来选择等价分配中包含的数据。
然而,仅仅测试边界线上的数据点往往不够充分。
提出边界条件时,一定要测试临近边界的合法数据,即测试最后一个可能合法的数据,以及刚超过边界的非法数据。
以下例子说明一下如何考虑所有可能的边界:--------------------------------------------------------------------------------如果文本输入域允许输入1-255个字符。
尝试:输入1个字符和255个字符(合法区间),也可以加入254个字符作为合法测试。
输入0个字符和256个字符作为非法区间。
--------------------------------------------------------------------------------如果程序读写软盘尝试:保存一个尺寸极小,甚至只有一项的文件。
然后保存一个很大的——刚好在软盘容量限制之内的文件。
保存空文件。
保存尺寸大于软盘容量的文件。
--------------------------------------------------------------------------------如果程序允许在一张纸上打印多个页面尝试:只打印一页打印允许的最多页面打印0页多于所允许的页面(如果可能的话)----------------------------------------------------------------------------------------------------------------------------------------------------------------2. 次边界条件测试上面所讲的是普通的边界条件,在产品说明书中有定义,或者在软件的过程中确定。
但有些边界在软件内部,最终用户几乎看不到,但是软件测试仍有必要检查,这样的边界条件成为次边界条件或者内部边界条件。
寻找这样的边界条件,不要求软件测试员成为程序员或者具有阅读源代码的能力,但是确实要求大体了解软件的工作方式。
2的乘方和ASCII 表是这样的两个例子:--------------------------------------------------------------------------------2的乘方术语范围或值位bit0或1双位doublebit0~15字节Byte0~255字word0~65,535或者0~4,294,967,295千K1,024兆M1,048,576亿1,073,741,824万亿1,099,511,627,776计算机和软件的基础是二进制数。
因此二的乘方是作为边界条件的重要数据。
如:在通讯软件中,带宽或者传输信息的能力总是受限制,因此软件工程师会尽一切努力在通讯字符串中压缩更多数据。
其中一个方法就是把信息压缩到尽可能小的单元中,发送这些小单元中最常用的信息,在必要时再扩展为大一些的单元。
假设某种通讯协议支持256条命令。
软件将发送编码为一个双位数据的最常用的15条命令;如果用到第16到256之间的命令,软件就转而发送编码为更长字节的命令。
这样,软件就会根据双位/字节边界执行专门的计算和不同的操作。
在建立等价区间的时候,要考虑是否需要包含2的乘方边界条件。
例如:软件接受1~1000范围内的数字,那么合法区间除了1和1000,也许还有2和999之外,还应该有临近2的乘方次边界:14,15,16以及254,255和256。
--------------------------------------------------------------------------------ASCII表ASCII码表并不是结构良好的连续表。
数字0~9对应48~57;斜杠字符(/)在0的前面,冒号(在9的后面;大写字母A~Z对应65~90;小写字母对应97~122。
这些情况都代表次边界条件。
如果测试进行文本输入或文本转换的软件,在定义数据区间包含哪些值时,参考一下ASCII表是相当明智的。
例如:测试的文本框只接受用户输入字符A~Z和a~z,就应该在非法区间中包含ASCII表中这些字符前后的值——@,',[,{。
----------------------------------------------------------------------------------------------------------------------------------------------------------------3. 默认值测试(默认、空白、空值、零值和无)好的软件会处理这种情况,常用的方法:一是将输入内容默认为合法边界内的最小值,或者合法区间内某个合理值;二是返回错误提示信息。
这些值在软件中通常需要进行特殊处理。
因此应当建立单独的等价区间。
在这种默认下,如果用户输入0或-1作为非法值,就可以执行不同的软件处理过程。
--------------------------------------------------------------------------------4. 破坏测试(非法、错误、不正确和垃圾数据)数据测试的这一类型是失败测试的对象。
这类测试没有实际规则,只是设法破坏软件。
不按软件的要求行事,发挥创造力吧!--------------------------------------------------------------------------------状态测试状态测试是通过不同的状态验证程序的逻辑流程。
软件测试员必须测试软件的状态及其转换。
软件状态是指软件当前所处的情况或者模式。
软件通过代码进入某一个流程分支,触发一些数据位,设置某些变量,读取某些变量,从而转入一个新的状态。
同数据测试一样,状态测试运用等价分配技术选择状态和分支。
因为选择不完全测试,所以要承担一定的风险,但是通过合理选择减少危险。
1. 建立状态转移图使用:方框和箭头;圆圈(泡泡)和箭头。
应包含的项目:-软件可能进入的每一种独立状态。
如果不能断定是否独立,先认为是;以后一旦发现不是,随时剔除。
-从一种状态转入另一种状态所需的输入和条件。
状态变化和存在的原因,就是我们要寻找的对象。
-进入或退出某种状态时的设置条件及输出结果。
包括显示的菜单和按钮、设置的标志位、产生的打印输出、执行的运算等等。
由于是黑盒测试,因而只需从用户的角度建立状态图即可。
2. 减少要测试的状态及转换的数量测试每一种路线的组合,走遍所有分支是不可能的事情。
大量的可能性也需要减少到可以操作的测试案例集合。
方法有以下5种:-每种状态至少访问一次。
无论用什么方法,每种状态都必须测试。
-测试看起来最常见最普遍的状态转换-测试状态之间最不常用的分支。
这些分支是最容易被产品设计者和程序员忽视的。
-测试所有错误状态机器返回值。
错误是否得到正确的处理、错误提示信息是否正确、修复错误时是否正确恢复软件等-测试随机状态转换。
3. 进行具体的测试——定义测试案例测试状态及其转换包括检查所有的状态变量——与进入和退出状态相关的静态条件、信息、值、功能等等。
如:窗口外观、窗口尺寸定义(固定/上次使用时的尺寸)、显示的菜单、默认设定值、文档的名称等。
状态无论是否可见,都必须进行状态确定。
状态变量也许不可见,但是很重要,一个常见的例子时文档涂改标志(以此判断退出时是否询问保存)。
失败状态测试状态测试的失败测试的案例,主要是竞争条件、重复、压迫和重负。
1. 竞争条件和时序错乱设计多任务操作系统不是很难,设计充分利用多任务能力的软件才是艰巨的任务。
在真正的多任务环境中软件设计绝对不能想当然,必须处理随时被中断的情况,能够与其他任何软件在系统中同时运行,并且共享内存、磁盘、通信设备以及其他硬件资源。