软件测试方法流程类型缺陷.docx
《软件测试方法流程类型缺陷.docx》由会员分享,可在线阅读,更多相关《软件测试方法流程类型缺陷.docx(26页珍藏版)》请在冰点文库上搜索。
软件测试方法流程类型缺陷
I.测试类型
功能指的是系统能做什么。
系统子系统或组件要实现的功能可以在工作产品中,如需求规格说明书,用户用例或功能规格说明书予以描述,不过也可能没有相应的文档。
功能测试基于功能和特征以及专门的系统之间的交互,系统的功能来设计测试条件和测试用例。
1专门的系统之间的交互,我们又叫做‘功能交互’
2可以采用基于规格说明书的技术〔有正式的需求或设计规格说明书时〕
3也可以基于测试人员对功能和特征的理解〔如果没有相应文档时〕
4功能测试主要是考虑软件的外部表现行为〔黑盒测试〕
5功能测试可以在个级别的测试中进行〔例如组件测试、集成测试和系统测试等级别都有基于设计或需求规格说明书的功能测试〕
1.功能测试举例
1安全性测试也是功能测试的一种,它会对安全性相关的功能〔比方防火墙〕进行测试,从而检测系统和数据是否能抵御外部恶意的威胁,比方病毒等。
2互操作性测试是另一种功能性测试,评估软件产品与其他一个或多个组件或系统交互的能力。
2.非功能测试
非功能性测试就是测试系统工作的怎样
非功能测试包括但不限于:
性能测试、负载测试、压力测试、可用性测试、可维护性测试、可靠性测试和可移植性测试
非功能测试可以在任何测试级别上执行
3.非功能测试举例
负载测试:
一种通过增加负载来测量组件或系统的测试方法。
例如:
通过并发用户数和事务数量来测量组件或系统能够承受的负载。
压力测试:
在规定的或超过规定的需求条件下测试组件\系统,以对其进行评估。
健壮性测试:
判定软件产品健壮性〔在出现无效输入或压力环境条件下,组件、系统能够正常工作的程度,参见fault-tolerance〕的测试。
性能测试:
判定软件产品性能〔组件、系统在给定的处理周期和吞吐率〔throughputrate〕等约束下,完成指定功能的程度〕的测试过程。
参见efficiencytesting.
4.与变更相关的测试
与变更相关的测试:
当软件被修改、缺陷被修复、新增了功能、软件运行环境发生变化等,需要开展与变更有关的测试。
根据经验,修改一个现存的程序,比编写一个新程序更容易产生错误〔依每写一行代码的错误数量计〕
再测试:
重新执行上次失败的测试用例,以验证纠错的正确性。
参见确认测试〔confirmationtesting〕
回归测试:
测试先前测试过并修改过的程序,确保更改没有给软件其他未改变的部分带来退化缺陷〔regressionbung〕.软件修改后或使用环境变更后要执行回归测试。
回归测试策略:
回归测试的规模可以根据在已运行的软件中发现新的缺陷的风险大小来决定,比方可以只重新运行所有发现缺陷的用例〔即只进行确认测试〕、测试所有经过修改的功能、测试所有新增功能、对整个系统进行完美的回归测试等,对变更进行影响分析〔impactanalysis〕有助于确定回归测试的深度。
将回归测试自动化是很好的选择。
回归测试可以在所有的测试级别上进行,同时适用于功能测试、非功能测试和结构测试。
5.维护测试
维护测试是在一个现有的运行系统上进行,且一旦对软件或系统进行修改、移植或退役处理时,就需要进行维护测试。
除了对已变更的部分进行测试外,维护测试还包括对系统没有发生变更的其他部分进行大范围的回归测试。
维护测试的范围取决于变更的风险、现有系统的规模和变更的大小。
维护测试根据变更情况的不同,可以在某一或所有的测试级别和测试类型上进行。
修改可以是计划中的功能增强〔例如:
根据版本发布的计划〕、纠正和应急变更、环境的变化比方计划中的操作系统或数据库升级,或由于新发现或暴露的软件、操作系统、硬件漏洞而大打的补丁等。
为软件移植〔如从一个平台移植到另外一个平台〕而进行的维护测试应该包括新环境的运行测试〔operationaltesting〕,以及对变更以后的软件的运行测试。
为系统退役而进行的维护测试应该包括数据移植或者存档测试,如果需要长时间的数据保存的话。
II.测试方法
软件测试方法是指测试软件性能的方法。
随着软件测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择合适的软件测试方法可以让用户事半功倍。
软件测试方法有系统测试、动态测试、单元测试、集成测试等多种。
B测试,英文名是Betatesting。
又称Beta测试用户验收测试〔uat〕。
B测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。
当开发和测试要完成所做的测试,而最终的错误和问题需要在最终发行前找到。
这种测试一般由最终用户或其他人员完成,不能由程序员或测试员完成。
A测试-Alpha测试
A测试,英文名是Alphatesting。
又称Alpha测试。
Alpha测试是由用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由该系统的程序员或测试员完成。
在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。
这种测试一般由最终用户或其他人员来完成,不能由程序员或测试员完成。
可移植性测试,英文名是Portabilitytesting。
又称兼容性测试。
可移植性测试是指测试软件是否可以被成功移植到指点的硬件或软件平台上。
1.UI测试
用户界面测试,英文名是Userinterfacetesting。
又称UI测试。
用户界面,英文名是Userinterface。
是指软件中的可见外观及其底层与用户交互的部分〔菜单、对话框、窗口和其他控件〕。
用户界面测试是指测试用户界面的风格是否美观,文字,图片组合是否完美,操作是否友好等等。
UI测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。
确保用户界面符合公司或行业的标准。
包括用户友好性、人性化、易操作性测试。
用户界面测试用户分析软件用户界面的设计是否合乎用户期望或要求。
它常常包括等菜单,对话框及对话框上所有的按钮,文字,出错提示,帮助信息〔Menu和heipcontent〕等方面的测试。
比方,测试MicrosoftExcel中插入符合功能所用的对话框的大小,所有按钮是否对齐,字符串字体大小,出错信息内容和字体大小,工具栏位置、图标等等。
2.冒烟测试
冒烟测试,英文名是Snoketesting。
冒烟测试的名称可以理解为该种测试耗时短,仅用一袋烟功夫足够了。
也有人认为是形象地类比新电路板基本功能检查。
任何新电路板焊好后,先通电检查,如果存在设计缺陷,电路板可能会短路,板子冒烟了。
冒烟测试的对象是新编译的每一个需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。
冒烟测试的执行者是版本编译人员。
3.随机测试
随机测试,英文名是Adhoctesting。
随机测试没有书面测试用例、记录期望结果、检查列表、脚本或指令的测试。
主要是根据测试者的经验对软件进行功能和性能抽查。
随机测试是根据说明书执行用例测试的只要补充手段,是保证测试覆盖完整性的有效方法和过程。
随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试样例〔TestCase〕没有覆盖到的部分。
另外,对于软件更新和新增加的功能要重点测试。
重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。
尤其对以前测试发现的直达Bug,进行再次测试,可以结合回归测试〔Regressivetesting〕一起进行。
本地化测试本地化测试,英文是Localizationtesting。
本地化就是将软件版本语言进行更改,比方将英文的windows改成中文的windows就是本地化。
本地化测试的对象是软件的本地化版本。
本地化测试的目的是测试特定目标区域设置的软件本地化质量。
本地化测试的环境是在本地化的操作系统上安装本地化的软件。
从测试方法上可以分为基本功能测试,安装/卸载测试,当地区域的软硬件兼容性测试。
测试的内容主要包括软件本地化后的界面布局和软件翻译的语言质量,包含软件、文档和联机帮助等部分。
4.基础化
本地化能力测试,英文是Localizabilitytesting。
本地化能力测试是指不需要重新设计或修改代码,将程序的用户界面翻译成任何目标语言的能力。
为了降低本地化能力测试的成本,提高测试效率,本地化能力测试通常在软件的伪本地化版本上进行。
本地化能力测试中发现的典型错误包括:
字符的硬编码〔即软件中需要本地化的字符写在了代码内部〕,对需要本地化的字符长度设置了固定值,在软件运行时以控件位置定位,图标和位图中包含了需要本地化的文本,软件的用户界面与文档术语不一致等。
5.国际化
国际化测试,英文是Internationaltesting。
又称国际化支持测试。
国际化测试的目的是测试软件的国际化支持能力,发现软件的国际化的潜在问题,保证软件在世界不同区域都能正常运行。
国际化测试使用每种可能的国际输入类型,针对任何区域性或区域设置检查产品的功能是否正常,软件国际化测试的重点在于执行国际字符串的输入/输出功能。
国际化测试数据必须包含东亚语言、德语、复杂脚本字符和英语〔可选〕的混合字符。
国际化支持测试是指验证软件程序在不同国家或区域的平台上也能够如预期的那样运行,而且还可以按照原设计尊重和支持使用当地常用的日期,字体,文字表示,特殊格式等等。
比方,用英文版的WindowsXP和MicrosoftWord能否展示阿拉伯字符串?
用阿拉伯版的WindowsXP和阿拉伯版的MicrosoftWord能否展示阿拉伯字符串?
又比方,日文版的MicrosoftExcel对话框是否显示正确翻译的日语?
一旦来说执行国际化支持测试的测试人员往往需要基本上了解这些国家或地区的语言要求和期望行为是什么。
6.安装测试
安装测试,英文是Installingtesting。
安装测试是确保软件在正常情况和异常情况下,例如,进行首次安装、升级、完整的或自定义的安装都能进行安装的测试。
异常情况包括磁盘空间不足、缺少目录创建权限等场景。
核实软件在安装后可立即正常运行。
安装测试包括测试安装代码以及安装手册。
安装手册提供如何进行安装,安装代码提供安装一些程序能够运行的基础数据。
B.白盒测试
白盒测试,英文是WhiteBoxTesting。
又称结构测试或者逻辑驱动测试。
白盒测试是把测试对象看作一个打开的盒子。
利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
白盒测试是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
白盒测试常用工具有:
Jtest、VcSmith、Jcontract、C++Test、CodeWizard、logiscope。
C.黑盒测试
黑盒测试,英文是BlackBoxTesting。
又称功能测试或者数据驱动测试。
黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。
软件测试人员以用户的角度,通过各种输入和观察软件的各种输出结果来发现软件存在的缺陷,而不关心程序具体如何实现的一种软件测试方法。
黑盒测试常用工具有:
AutoRunner、winrunner
D.自动化
自动化测试,英文是AutomatedTesting。
使用自动化测试工具来进行测试,这类测试一般不需要人干预,通常在GUI、性能等测试和功能测试中用得较多。
通过录制测试脚本,然后执行这个测试脚本来实现测试过程的自动化。
国内领先的自动化测试服务提供商是泽众软件。
自动化测试工具有QTP、Testcomplete、AutoRunner和TAR等。
1.回归测试
回归测试,英文是Regressiontesting。
回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。
理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。
根据修复好了的缺陷再重新进行测试。
回归测试的目的在于验证以前出现过但已经修复好的缺陷不再重新出现。
一般指对某已知修正的缺陷再次围绕它原来出现时的步骤重新测试。
通常确定所需的再测试的范围时是比较困难的,特别当临近产品发布日期时。
因为为了修正某缺陷时必需更改源代码,因而就有可能影响这部分源代码所控制的功能。
所以在验证修好的缺陷时不仅要服从缺陷原来出现时的步骤重新测试,而且还要测试有可能受影响的所有功能。
因此应当鼓励对所有回归测试用例进行自动化测试。
2.验收测试
验收测试,英文是Acceptancetesting。
验收测试是指系统开发生命周期方法论的一个阶段,这时相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收。
它让系统用户决定是否接收系统。
它是一项确定产品是否能够满足合同或用户所规定需求的测试。
验收测试一般有三种策略:
正式验收、非正式验收或Alpha测试、Beta测试。
E.静态测试
静态测试,英文是StaticTesting。
静态测试指测试不运行的部分,例如测试产品说明书,对此进行检查和审阅.。
静态方法是指不运行被测程序本身,仅通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性。
静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。
静态测试结果可用于进一步的查错,并为测试用例选取提供指导。
静态测试常用工具有:
Logiscope、PRQA;
F.动态测试
动态测试,英文是MomentTesting。
动态测试是指通过运行软件来检验软件的动态行为和运行结果的正确性。
根据动态测试在软件开发过程中所处的阶段和作用,动态测试可分为如下几个步骤:
1、单元测试
2、集成测试
3、系统测试
4、验收测试
5、回归测试
G.单元测试
单元测试,英文是UnitTesting。
单元测试是最微小规模的测试;以测试某个功能或代码块。
典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。
这个工作不容易做好,除非应用系统有一个设计很好的体系结构;还可能需要开发测试驱动器模块或测试套具。
H.集成测试
集成测试,英文是IntegrationTesting。
集成测试是指一个应用系统的各个部件的联合测试,以决定它们能否在一起共同工作并没有冲突。
部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。
这种类型的测试尤其与客户服务器和分布式系统有关。
一般集成测试以前,单元测试需要完成。
集成测试是单元测试的逻辑扩展。
它的最简单的形式是:
两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。
从这一层意义上讲,组件是指多个单元的集成聚合。
在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。
方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。
最后,将构成进程的所有模块一起测试。
此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。
集成测试识别组合单元时出现的问题。
通过使用要求在组合单元前测试每个单元,并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。
这种方法将可能发生的情况数量减少到更简单的分析级别
I.系统测试
系统测试,英文是SystemTesting。
系统测试是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。
系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。
系统测试的对象不仅仅包括需要测试的产品系统的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。
因此,必须将系统中的软件与各种依赖的资源结合起来,在系统实际运行环境下来进行测试。
J.端到端
端到端测试,英文是EndtoEndTesting。
端到端测试类似于系统测试,测试级的“宏大”的端点,涉及整个应用系统环境在一个现实世界使用时的模拟情形的所有测试。
例如与数据库对话,用网络通讯,或与外部硬件、应用系统或适当的系统对话。
端到端架构测试包含所有访问点的功能测试及性能测试。
端到端架构测试实质上是一种"灰盒"测试,一种集合了白盒测试和黑盒测试的优点的测试方法。
K.卸载测试
卸载测试,英文是UninstallTesting。
卸载测试是对软件的全部、部分或升级卸载处理过程的测试。
主要是测试软件能否卸载,卸载是否干净,对系统有无更改,在系统中的残留与后来的生成文件如何处理等。
还有原来更改的系统值是否修改回去
L.验收测试
接受测试,英文是AcceptTesting。
接受测试是基于客户或最终用户的规格书的最终测试,或基于用户一段时间的使用后,看软件是否满足客户要求。
一般从功能、用户界面、性能、业务关联性进行测试。
M.性能测试
性能测试,英文是PerformanceTesting。
性能测试是在交替进行负荷和强迫测试时常用的术语。
理想的“性能测试”(和其他类型的测试)应在需求文档或质量保证、测试计划中定义。
性能测试一般包括负载测试和压力测试。
通常验证软件的性能在正常环境和系统条件下重复使用是否还能满足性能指标。
或者执行同样任务时新版本不比旧版本慢。
一般还检查系统记忆容量在运行程序时会不会出现内存泄露(memoryleak)。
比方,验证程序保存一个巨大的文件新版本不比旧版本慢。
1.健全测试
健全测试,英文是Sanitytesting。
健全测试是指一个初始化的测试工作,以决定一个新的软件版本测试是否足以执行下一步大的测试能力。
例如,如果一个新版软件每5分钟与系统冲突,使系统陷于泥潭,说明该软件不够“健全”,不具备进一步测试的条件。
2.衰竭测试
衰竭测试,英文是FailureTesting。
衰竭测试是指软件或环境的修复或更正后的“再测试”。
可能很难确定需要多少遍再次测试。
尤其在接近开发周期结束时。
自动测试工具对这类测试尤其有用。
3.负载测试
负载测试,英文是Loadtesting。
负载测试是测试一个应用在重负荷下的表现。
例如测试一个Web站点在大量的负荷下,何时系统的响应会退化或失败,以发现设计上的错误或验证系统的负载能力。
在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。
负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。
此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。
4.强迫测试
强迫测试,英文是ForceTesting。
强迫测试是在交替进行负荷和性能测试时常用的术语。
也用于描述对象在异乎寻常的重载下的系统功能测试之类的测试,如某个动作或输入大量的重复,大量数据的输入,对一个数据库系统大量的复杂查询等。
5.压力测试
压力测试,英文是StressTesting。
和负载测试差不多。
压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。
压力测试的基本思路很简单:
不是在常规条件下运行手动或自动测试,而是在电脑数量较少或系统资源匮乏的条件下运行测试。
通常要进行压力测试的资源包括内部内存、CPU可用性、磁盘空间和网络带宽等。
一般用并发来做压力测试。
6.恢复测试
恢复测试,英文是Recoverytesting。
恢复测试是测试一个系统从如下灾难中能否很好地恢复,如遇到系统崩溃、硬件损坏或其他灾难性问题。
恢复测试指通过人为的让软件〔或者硬件〕出现故障来检测系统是否能正确的恢复,通常关注恢复所需的时间以及恢复的程度。
恢复测试主要检查系统的容错能力。
当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。
恢复测试首先要采用各种方法强迫系统失败,然后验证系统是否能尽快恢复。
对于自动恢复需验证重新初始化〔reinitialization〕、检查点(checkpointingmechanisms)、数据恢复(datarecovery)和重新启动(restart)等机制的正确性;对于人工干预的恢复系统,还需估测平均修复时间,确定其是否在可接受的范围内。
N.安全测试
安全测试,英文是SecurityTesting。
安全测试是测试系统在防止非授权的内部或外部用户的访问或故意破坏等情况时怎么样。
这可能需要复杂的测试技术。
安全测试检查系统对非法侵入的防范能力。
安全测试期间,测试人员假扮非法入侵者,采用各种方法试图突破防线。
例如:
①想方设法截取或破译口令;
②专门定做软件破坏系统的保护机制;
③故意导致系统失败,企图趁恢复之机非法进入;
④试图通过浏览非保密数据,推导所需信息,等等。
理论上讲,只要有足够的时间和资源,没有不可进入的系统。
因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。
此时非法侵入者已无利可图。
O.兼容性
兼容测试,英文是CompatibilityTesting。
兼容测试是测试软件在一个特定的硬件/软件/操作系统/网络等环境下的性能如何。
向上兼容向下兼容,软件兼容硬件兼容。
软件的兼容性有很多需要考虑的地方。
P.可用性
可用性测试,英文是PracticalUsabilityTesting。
可用性测试是对“用户友好性”的测试。
显然这是主观的,且将取决于目标最终用户或客户。
用户面谈、调查、用户对话的录象和其他一些技术都可使用。
程序员和测试员通常都不宜作可用性测试员。
Q.比较测试
比较测试,英文是CompareTesting。
比较测试是指与竞争伙伴的产品的比较测试,如软件的弱点、优点或实力。
来取长补短,以增强产品的竞争力。
R.可接受性
可接受性测试,英文是AcceptabilityTesting。
可接受性测试是在把测试的版本交付测试部门大范围测试以前进行的对最基本功能的简单测试。
因为在把测试的版本交付测试部门大范围测试以前应该先验证该版本对于所测试的功能基本上比较稳定。
必须满足一些最低要求。
比方不会很容易程序就挂起或崩溃。
如果一个新版本没通过可测试性的验证,就应该阻拦测试部门花时间在该测试版本上测试。
同时还要找到造成该版本不稳定的主要缺陷并催促尽快加以修正
S.边界条件
边界条件测试,英文是BoundaryTesting。
又称边界值测试。
一种黑盒测试方法,适度等价类分析方法的一种补充,由长期的测试工作经验得知,大量的错误是发生在输入或输出的边界上。
因此针对各种边界情况设计测试用例,可以查出更多的错误。
边界条件测试是环绕边界值的测试。
通常意味着测试软件各功能是否能正确处理最大值,最小值或者所设计软件能够处理的最长的字符串等等。
T.强力测试
强力测试,英文是MightinessTesting。
强力测试通常验证软件的性能在各种极端的环境和系统条件下是否还能正常工作。
或者说是验证软件的性能在各种极端环境和系统条件下的承受能力。
比方,在最低的硬盘驱动器空间或系统记忆容量条件下,验证程序重复执行打开和保存一个巨大的文件1000次后也不会崩溃或死机。
U.装配安装
装配/安装/配置测试是验证软件程序在不同厂家的硬件上,所支持的不同语言的新旧版本平台上,和不同方式安装的软件都能够如预期的那样正确运行。
比方,把英文版的Microsoft