软件测试的方法根据软件工程的组织和实现方式,有很大差别,有些是比较技术化的方法,有些则是工程方法,主要分为: 黑盒测试方法群:等价类划分、边界值、因果图、基路径法、专家测试法、smoking、场景测试等 白盒测试方法群:同行评审、需求审查、代码审查、接口测试(调用测试和返回测试,需要结合等价类和因果图方法)等。
当在单元层面黑盒而在集成层面白盒时,基本上两类方法就会有结合了,就会出现习惯上说的灰盒测试(说实话,不做到纯产品级开发,基本上都是用的灰盒测试)。
(1)黑盒测试(black-box testing):只关心输入和输出的结果 (2)白盒测试(white-box testing):去研究里面的源代码和程序结构2、按是否运行程序分为:(1)静态测试(static testing):是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档可能存在的错误的过程。
静态测试包括:对于代码测试,主要是测试代码是否符合相应的标准和规范。对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。
对于文档测试,主要测试用户手册和需求说明是否真正符合用户的实际需求。(5)动态测试(dynamic testing),是指实际运行被测程序,输入相应的测试数据,检查输出结果和预期结果是否相符的过程3、按阶段划分:(1)单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。
桩模块(stud)是指模拟被测模块所调用的模块,驱动模块(driver)是指模拟被测模块的上级模块,驱动模块用来接收测试数据,启动被测模块并输出结果。(2)集成测试(integration testing),是单元测试的下一阶段,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部门。
集成测试就是用来检查各个单元模块结合到一起能否协同配合,正常运行。(3)系统测试(system testing),指的是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。
系统测试的主要依据是《系统需求规格说明书》文档。(4)验收测试(acceptance testing),指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。
验收测试又分为a测试和beta测试,其中a测试指的是由用户、测试人员、开发人员等共同参与的内部测试,而beta测试指的是内测后的公测,即完全交给最终用户测试。4、黑盒测试分为功能测试和性能测试:1)功能测试(function testing),是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。
包括逻辑功能测试(logic function testing) 界面测试(UI testing)UI=User Interface 易用性测试(usability testing):是指从软件使用的合理性和方便性等角度对软件系统进行检查,来发现软件中不方便用户使用的地方。兼容性测试(compatibility testing):包括硬件兼容性测试和软件兼容性测试2)性能测试(performance testing) 软件的性能主要有时间性能和空间性能两种 时间性能:主要指软件的一个具体事务的响应时间(respond time)。
空间性能:主要指软件运行时所消耗的系统资源。软件性能测试分为:一般性能测试:指的是让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测试。
稳定性测试也叫可靠性测试(reliability testing):是指连续运行被测系统检查系统运行时的稳定程度。负载测试(load testing):是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。
压力测试(stress testing):是指持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。(Validate the system or software can allowed the biggest stress.)5、其他测试类型:回归测试(regression testing)是指对软件的新的版本测试时,重复执行上一个版本测试时的用例。
(When a new build or release is deployed, repeat all the test cases which has executed in the last build or release.) 冒烟测试(smoke testing),是指在对一个新版本进行大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。(validate the major function is deployed or not in software of system when a new build or release is implement.) 随机测试(random testing),是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
(means or all the test data is random, to validate the some edge bugs.)。
第一类测试方法是试图验证软件是“工作的”,所谓“工作的”就是指软件的功能是按照预先的设计执行的;而第二类测试方法则是设法证明软件是“不工作的”。
还有两大类:白盒法和黑盒法。
白盒法:你清楚程序的流程时,用不同的数据测试你程序的代码,验证程序的正确性,有:条件测试,路径测试,条件组合。。。。
白盒法用在程序开发阶段的前期。
黑盒法:主要用于程序开发阶段的后期,即程序的流程测试正确后,测试程序的结果。有什么因果法,边缘值法等。
具体你可以买本软件工程方面的书看看。
还有一下方法:
功能测试:可接受性测试:用户界面测试:探索或开放'型的测试:性能测试:回归测试:强力测试:集成与兼容性测试:装配/安装/配置测试:国际化支持测试:本地化语言测试:
这些都是测试的方法.
1、恢复测试 恢复测试主要检查系统的容错能力。
当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。恢复测试首先要采用各种办法强迫系统失败,然后验证系统是否能尽快恢复。
对于自动恢复需验证重新初始化(reinitialization)、检查点(checkpointing mechanisms)、数据恢复(data recovery)和重新启动 (restart)等机制的正确性;对于人工干预的恢复系统,还需估测平均修复时间,确定其是否在可接受的范围内。 2、安全测试 安全测试检查系统对非法侵入的防范能力。
安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如,①想方设法截取或破译口令;②专门定做软件破坏系统的保护机制;③故意导致系统失败,企图趁恢复之机非法进入;④试图通过浏览非保密数据,推导所需信息,等等。
理论上讲,只要有足够的时间和资源,没有不可进入的系统。因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。
此时非法侵入者已无利可图。 3、强度测试 强度测试检查程序对异常情况的抵抗能力。
强度测试总是迫使系统在异常的资源配置下运行。例如,①当中断的正常频率为每秒一至两个时,运行每秒产生十个中断的测试用例;②定量地增长数据输入率,检查输入子功能的反映能力;③运行需要最大存储空间(或其他资源)的测试用例;④运行可能导致虚存操作系统崩溃或磁盘数据剧烈抖动的测试用例,等等。
4、性能测试 对于那些实时和嵌入式系统,软件部分即使满足功能要求,也未必能够满足性能要求,虽然从单元测试起,每一测试步骤都包含性能测试,但只有当系统真正集成之后,在真实环境中才能全面、可靠地测试运行性能系统性能测试是为了完成这一任务。性能测试有时与强度测试相结合,经常需要其他软硬件的配套支持。
这个应该先分析下常见的软件测试安全都包括哪些,比如针对手游类应用,测试维度覆盖:游戏通信协议、服务器健壮性、客户端函数安全、脚本逻辑安全、内存安全、静态资源安全、变速测试等维度。
主要方法有黑盒模型:将程序看作黑盒子、白盒模型:将程序看作路径的组合、模式匹配方法:将程序看作字符串、状态机模型:将程序看作状态机等。
我了解到腾讯有一个平台腾讯WeTest是专门做移动应用测试服务的,建议你去了解下wetest.qq.com
1、从是否关心内部结构来看 (1)白盒测试:又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并完成测试的一种测试方法。
(2)黑盒测试:又称为数据驱动测试,把测试对象当做看不见的黑盒,在完全不考虑程序内部结构和处理过程的情况下,测试者仅依据程序功能的需求规范考虑,确定测试用例和推断测试结果的正确性,它是站在使用软件或程序的角度,从输入数据与输出数据的对应关系出发进行的测试。(3)灰盒测试:是一种综合测试法,它将“黑盒”测试与“白盒”测试结合在一起,是基于程序运行时的外部表现又结合内部逻辑结构来设计用例,执行程序并采集路径执行信息和外部用户接口结果的测试技术。
2、从是否执行代码看 (1)静态测试:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。(2)动态测试:是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能指标。
3、从开发过程级别看 (1)单元测试:又称模块测试,是针对软件设计的最小单位----程序模块或功能模块,进行正确性检验的测试工作。其目的在于检验程序各模块是否存在各种差错,是否能正确地实现了其功能,满足其性能和接口要求。
(2)集成测试:又叫组装测试或联合,是单元测试的多级扩展,是在单元测试的基础上进行的一种有序测试。旨在检验软件单元之间的接口关系,以期望通过测试发现各软件单元接口之间存在的问题,最终把经过测试的单元组成符合设计要求的软件。
(3)系统测试:是为判断系统是否符合要求而对集成的软、硬件系统进行的测试活动、它是将已经集成好的软件系统,作为基于整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、人员、数据等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。在系统测试中,对于具体的测试类型有:(1)功能测试:对软件需求规格说明书中的功能需求逐项进行的测试,以验证功能是否满足要求。
(2)性能测试:对软件需求规格说明书的功能需求逐项进行的测试,以验证功能是否满足要求。(3)接口测试:对软件需求规格说明中的接口需求逐项进行的测试。
(4)人机交互界面测试:对所有人机交互界面提供的操作和显示界面进行的测试,以检验是否满足用户的需求。(5)强度测试:强制软件运行在异常乃至发生故障的情况下(设计的极限状态到超出极限),验证软件可以运行到何种程序的测试。
(6)余量测试:对软件是否达到规格说明中要求的余量的测试。(7)安全性测试:检验软件中已存在的安全性、安全保密性措施是否有效的测试,(8)可靠性测试:在真实的或仿真的环境中,为做出软件可靠性估计而对软件进行的功能(其输入覆盖和环境覆盖一般大于普通的功能测试) (9)恢复性测试:对有恢复或重置功能的软件的每一类导致恢复或重置的情况,逐一进行的测试。
(10)边界测试:对软件处在边界或端点情况下运行状态的测试。(11)数据处理测试:对完成专门数据处理功能所进行的测试。
(12)安装性测试:对安装过程是否符合安装规程的测试,以发现安装过程中的错误。(13)容量测试:检验软件的能力最高能达到什么程度的测试。
(14)互操作性测试:为验证不同软件之间的互操作能力而进行的测试。(15)敏感性测试:为发现在有效输入类中可能引起某种不稳定性或不正常处理的某些数据的组合而进行的测试。
(16)标准符合性测试:验证软件与相关国家标准或规范(如军用标准、国家标准、行业标准及国际标准)一致性的测试。(17)兼容性测试:验证软件在规定条件下与若干个实体共同使用或实现数据格式转换时能满足有关要求能力的测试。
(18)中文本地化测试:验证软件在不降低原有能力的条件下,处理中文能力的测试。4、从执行过程是否需要人工干预来看 (1)手工测试:就是测试人员按照事先为覆盖被测软件需求而编写的测试用例,根据测试大纲中所描述的测试步骤和方法,手工地一个一个地输 入执行,包括与被测软件进行交互(如输入测试数据、记录测试结果等),然后观察测试结果,看被测程序是否存在问题,或在执行过程中是否会有一场发生,属于比较原始但是必须执行的一个步骤。
(2)自动化测试:实际上是将大量的重复性的测试工作交给计算机去完成,通常是使用自动化测试工具来模拟手动测试步骤,执行用某种程序设计语言编写的过程(全自动测试就是指在自动测试过程中,不需要人工干预,由程序自动完成测试的全过程;半自动测试就是指在自动测试过程中,需要手动输入测试用例或选择测试路径,再由自动测试程序按照人工指定的要求完成自动测试)5、从测试实施组织看 (1)开发测试:开发人员进行的测试 (2)用户测试:用户方进行的测试 (3)第三方测试:有别于开发人员或用户进行的测试,由专业的第三方承担的测试,目的是为了保证测试工作的客观性6、从测试所处的环境看 (1)阿尔法测试:是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试 (2)。
《全国计算机等级考试三级教程软件测试》目录 第1章 软件测试的基本概念1.1 软件质量的概念1.1.1 软件质量的定义1.1.2 软件质量的属性1.1.3 软件质量模型1.1.4 软件质量的度量1.1.5 影响软件质量的主要因素1.2 软件测试的概念1.2.1 软件测试的定义与目的1.2.2 软件测试的原则1.3 软件的缺陷与错误1.3.1 软件缺陷的定义和类型1.3.2 软件缺陷的级别1.3.3 软件缺陷产生的原因1.3.4 软件缺陷的构成第1章 软件测试的基本概念1.1 软件质量的概念1.1.1 软件质量的定义1.1.2 软件质量的属性1.1.3 软件质量模型1.1.4 软件质量的度量1.1.5 影响软件质量的主要因素1.2 软件测试的概念1.2.1 软件测试的定义与目的1.2.2 软件测试的原则1.3 软件的缺陷与错误1.3.1 软件缺陷的定义和类型1.3.2 软件缺陷的级别1.3.3 软件缺陷产生的原因1.3.4 软件缺陷的构成1.3.5 修复软件缺陷的代价1.4 软件测试的经济学与心理学1.4.1 软件测试的心理学1.4.2 软件测试的经济学1.5 软件质量保证1.5.1 软件质量保证概要1.5.2 软件质量保证活动的实施1.5.3 软件的验证与确认1.5.4 验证和确认任务分析 本章小结 第2章 软件生存周期中测试的实施2.1 软件开发阶段2.1.1 软件生存周期2.1.2 软件测试的生存周期模型2.1.3 软件测试过程模型2.1.4 测试信息流2.2 需求获取与分析阶段的测试2.2.1 需求评审的实施2.2.2 需求规格说明的评审2.2.3 Wiegers 用例与需求评审表2.2.4 基于原型的测试2.2.5 基于需求的测试覆盖率评估2.3 设计阶段的测试2.3.1 设计的测试因素2.3.2 设计评审的实施2.3.3 设计规格说明的评审2.3.4 设计元素的覆盖原则2.4 编程阶段的测试2.4.1 白盒测试与黑盒测试2.4.2 源代码的控制流覆盖原则2.4.3 源代码的数据流覆盖原则2.4.4 源代码的静态分析与动态测试2.5 运行和维护阶段的测试2.6 回归测试2.6.1 回归测试的概念2.6.2 回归测试的类型2.6.3 回归测试的时机2.6.4 回归测试的实施 本章小结 第3章 代码检查、走查与评审3.1 桌上检查3.1.1 桌上检查的实施3.1.2 桌上检查的检查表3.2 代码检查3.2.1 特定的角色和职责3.2.2 代码检查的实施3.2.3 用于代码检查的检查表3.3 走查3.3.1 特定的角色和职责3.3.2 走查的实施3.3.3 走查中的静态分析技术3.4 同行评审3.4.1 同行评审的角色和职责3.4.2 同行评审的内容3.4.3 评审的方法和技术3.4.4 评审工作 本章小结 第4章 白盒测试4.1 覆盖率的概念4.2 逻辑覆盖4.2.1 语句覆盖与块覆盖4.2.2 判定覆盖(分支覆盖)4.2.3 条件覆盖4.2.4 条件/判定覆盖4.2.5 条件组合覆盖4.2.6 路径覆盖4.2.7 ESTCA覆盖4.2.8 LCSAJ覆盖4.3 路径测试4.3.1 分支结构的路径测试4.3.2 循环结构的路径测试4.3.3 圈复杂度与基本路径测试4.4 数据流测试4.4.1 定义∕使用测试的几个定义4.4.2 定义∕使用测试举例4.4.3 定义∕使用路径测试覆盖指标4.5 基于覆盖的测试用例选择4.5.1 覆盖率的使用4.5.2 使用最少的测试用例来达到覆盖4.6 程序插桩技术4.6.1 程序插桩4.6.2 用于测试覆盖率的程序插桩4.6.3 用于断言检测的程序插桩4.6.4 用于数据流异常检测的程序插桩 本章小结 第5章 黑盒测试5.1 等价类测试5.1.1 等价类的概念5.1.2 等价类测试的原则5.1.3 等价类方法测试用例设计举例5.2 边界值分析5.2.1 边界值分析的概念5.2.2 选择测试用例的原则5.2.3 边界值方法测试用例设计举例5.3 基于判定表的测试5.3.1 判定表的概念5.3.2 基于判定表的测试用例设计举例5.4 基于因果图的测试5.4.1 因果图的适用范围5.4.2 用因果图生成测试用例5.4.3 因果图法测试用例设计举例5.5 基于状态图的测试5.5.1 状态图5.5.2 利用状态转换树生成测试用例5.5.3 利用状态转换表生成测试用例5.6 基于功能图的测试5.6.1 功能图5.6.2 功能图法设计测试用例举例5.7 基于用例和场景的测试5.7.1 基本流和备选流5.7.2 利用用例和场景设计测试用例的实例5.8 基于有向图的测试用例设计5.8.1 使用基于有向图的测试的场合5.8.2 基于事务流建模设计测试用例5.8.3 基于控制流建模设计测试用例5.8.4 基于有向图设计测试用例的过程5.9 基于正交实验设计法的测试5.9.1 提取功能说明,构造因子/ 状态表5.9.2 加权筛选,生成因素分析表5.9.3 利用正交表构造测试数据集5.10 其他黑盒测试用例设计技术 本章小结 第6章 单元测试和集成测试6.1 单元测试的基本概念6.1.1 单元测试的定义6.1.2 单元测试与集成测试、系统测试的区别6.1.3 单元测试环境6.2 单元测试策略6.2.1 自顶向下的单元测试策略6.2.2 自底向上的单元测试策略6.2.3 孤立测试6.2.4 综合测试6.3 单元测试分析6.3.1 模块接口6.3.2 局部数据结构6.3.3 独立路径6.3.4 出错处理6.3.5 边界条件6.4 单元测试的测试用例设计原则6.4.1 单元测试的测试用例设计步骤6.4.2 单元测试中的白盒测试与黑盒测试6.5 集成测试的基本概念6.6 集成测试策略6.6.1 基于分解的集成策略6.6.2 基于功能的集成6.6.3 基于路径的集成6.6.4 基于调用图的集成6.7 集成测试分析6.7.1 体系结构分析6.7.2 模块单元分析6.7.3 接口分析6.7.4 风险分析6.7.5 可测试性分析6.7.6 集成测试策略分析6.7.7 常见的集成测试故障6.8 集成测试的测试用例设计原则6.8.1 集成测试的测试用例设计步骤6.8.2 场景测试 本章小结 第7章 系统测试7.1 系统测试概念7.2 系。
V模型 v模型在软件测试方面,V模型是最广为人知的模型,尽管很多富有实际经验的测试人员还是不太熟悉V模型,或者其它的模型。
V模型已存在了很长时间,和瀑布开发模型有着一些共同的特性,由此也和瀑布模型一样地受到了批评和质疑。V模型中的过程从左到右,描述了基本的开发过程和测试行为。
V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现。
W模型 W模型W模型由Evolutif公司提出,相对于V模型,W模型更科学。W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。
测试与开发是同步进行的,从而有利于尽早地发现问题。W模型也有局限性。
W模型和V模型都把软件的开发视为需求、设计、编码等一系列串行的活动,无法支持迭代、自发性以及变更调整。 X模型 X模型X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终成为可执行的程序,然后再对这些可执行程序进行测试。
己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。
由图中可见,X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。但这样可能对测试造成人力、物力和财力的浪费,对测试员的熟练程度要求比较高。
H模型 H模型H模型中, 软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。软件测试可以尽早的进行,并且可以根据被测物的不同而分层次进行。
这个示意图演示了在整个生产周期中某个层次上的一次测试“微循环”。图中标注的其它流程可以是任意的开发流程,例如设计流程或者编码流程。
也就是说, 只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行了。 H模型揭示了一个原理:软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。
H模型指出软件测试要尽早准备, 尽早执行。不同的测试活动可以是按照某个次序先后进行的,但也可能是反复的,只要某个测试达到准备就绪点,测试执行活动就可以开展。
更多相关的测试知识,可以关注下 搜狗测试 微信公众号,那上面会发各种测试相关的文章。
黑盒测试和白盒测试。
黑盒测试:又叫功能测试或数据驱动测试。黑盒测试是在程序接口上进行测试,主要是为了发现以下错误:是否有不正确或者是遗漏了的功能,在接口上,输入能否正确的接受,能否输出正确的结果;是否有数据结构错误或者外部信息访问错误;性能上是否满足要求;是否有初始化或终止性错误;用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的结果。
白盒测试:测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试;通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或数据驱动测试。白盒测试主要对程序模块进行如下检查:所有独立的执行路径至少测试一次。对所有的逻辑判定,取真和取假的两种情况都至少测试一次。在循环的边界和运行界限内执行循环体。测试内部数据结构的有效性等。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.758秒