软件测试策略有哪些?
软件测试策略把软件测试用例的设计方法集成到一系列已经周密计划过的步骤中去,从而使得软件的开发得以成功的完成。
同样重要的是,软件测试策略为软件开发人员、质量保证组织、和客户提供了一个路线图——这个路线图描述了测试的步骤,以及当这些步骤在计划和实施的过程中,需要多少工作量、时间、和资源。
因此,任何测试策略都必须和测试计划、测试用例设计、测试执行、还有测试结果数据的收集与分析结合在一起。
一种软件测试策略应当具备足够的灵活性,这样在必要的时候它能够有足够的创造性和可塑性来应付所有的大软件系统。
与此同时,软件测试策略还必须保证足够的严格,这样才能保证对项目的整个进程进行合理的计划和跟踪管理。
Shooman[SHO83]对这个问题进行了探讨: 在许多情况下,测试是一个独立的过程,不同的测试类型的数量和不同的开发方法是一样多。
许多年以来,我们对付程序出错的唯一武器就是谨慎的设计,以及程序员个人的智慧。
我们现在处于这样的一个时代——现代设计技术(和正式的技术复审)正在帮助我们减少代码中存在的初始错误。
类似地,不同的测试方法正在开始聚合为有限的几种方法和思想。
这些方法和思想就是我们所说的策略。
在第16章中,我们已经介绍了软件测试技术①。
在本章中,我们将会把注意力放在软件测试策略上。
软件测试的总结有什么
软件测试的策略途径 测试是一系列可以事先计划并且可以系统地进行管理的活动。
正是由于这个原因,应当为软件工程过程定义一个软件测试的模板——即我们可以把特定的测试用例设计方法放置进去的一系列步骤。
人们已经提出了许多软件测试策略,所有这些策略都为软件开发人员提供了一个供测试用的模板,而且它们都包含下列的类属特征: ·测试开始于模块层②,然后“延伸”到整个基于计算机的系统集合中。
·不同的测试技术适用于不同的时间点。
·测试是由软件的开发人员和(对大型系统来说)独立的测试组来管理的。
·测试和调试是不同的活动,但是调试必须能够适应任何的测试策略。
软件测试策略必须提供可以用来检验一小段源代码是否得以正确实现的低层测试,同时也要提供能够验证整个系统的功能是否符合用户需求的高层测试。
一种策略必须为使用者提供指南,并且为管理者提供一系列的重要的程碑。
因为测试策略的步骤是在软件完成的最终期限的压力已经开始出现的时候才开始进行的,所以测试的进度必须是可测量的,而且问题要尽可能早的暴露出来才好。
17.1.1 验证和确认 软件测试是我们通常所讲的一个更为广泛的话题验证和确认(Verification and Validation,V&V)的一个部分。
验证指的是保证软件正确地实现了某一特定功能的一系列活动。
确认指的则是保证软件的实现满足了用户需求的一系列活动。
Boehm[BOE81]是用另外一种方法来解释这两者的区别的: 验证:“我们是否正确地完成了产品?” 确认:“我们是否完成了正确的产品?” V&V的定义还包含了许多我们称作软件质量保证(SQA)的许多活动。
回忆一下我们在第8章中对软件质量的讨论。
为了获取软件质量而必需的活动可以看作是图17-1中所描绘的一些组成部分。
软件工程方法提供了质量的基础,分析、设计和构造(编码)方法通过提供一致的技术和可预测的结果而帮助提高质量,正式的技术复审(跟踪检查)有助于保证作为每一个软件工程步骤的结果而产生的工作产品的质量。
在这些过程当中,测度和控制被应用于软件配置的每一个元素中。
标准和规程也有助于保证一致性,而一个形式化的SQA过程保证了“整套质量思想”的实现。
测试是质量可以被评估——更实际点说,错误可以被发现——的最后堡垒,但是,测试不应当被视为一个安全网。
象人们所说的那样,“你不能测试质量。
如果你开始测试的时候它不在那里,那么当你完成测试的时候它仍然不会在那里”。
质量在软件的整个过程中都和软件结合在一起。
方法和工具的正确使用,有效的正式技术复审和可靠的管理与测度都可以导致在测试过程中得以认可的质量。
Miller[MIL77]把软件测试和质量保证联系在一起:“程序测试的内在动机是使用对大规模系统和小规模系统都能节约地并且有效地应用的方法来认可软件的质量。
” 需要重点加以注意的是,验证和确认包含了范围很广的SQA活动,其中包括正式技术复审、质量和配置审查、性能监控、仿真、可行性研究、文档复审、数据库复审、算法分析、开发测试、质量测试和安装测试[WAL89]。
虽然测试在V&V中发挥着非常重要的作用,但是其他的活动也是必要的。
软件测试策略和测试软件有哪些
第三,它可以做函数等的条件覆盖,黑盒;其中白盒又能按方法分,路径覆盖等,比如数据流测试策略很多。
还可以按动态和静态分,好比代码走读算静态,手动执行算动态。
还能按流程分,它可以走数据流。
各种不同的策略也不是单一存在的,看你从什么角度了。
比如按阶段分可以分单元测试,集成测试,看你做功能还是性能了。
基本都是录制回放加验证,没什么大花头,首先它是单元测试阶段,其次,系统测试;按可见度分可以分白盒,再者,它是动态测试的一种等等。
建议你去读下软件工程的书,比如不同的覆盖率:条件覆盖,是几种并存的。
好比你用Nunit做单元测试,业务流测试,它就包含了几种策略,先做一个入门。
测试软件很多...
软件测试的方法一共有几种
1、按是否查看程序内部结构分为:(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)软件开发技术很多人认为,干吗要学习软件开发啊,那还不如直接去学什么JAVA、C++、C#了。
要知道,在以后的软件测试工作中,你就会发现软件开发与软件测试之间是什么样的关系了。
没有软件开发,就没有软件测试,有了软件测试,软件开发出的软件产品才能够达到用户满意的地步,他们之间是相互依赖关系。
有了更多的软件开发知识,就会更好地能理解软件产品,就知道在哪个环节开发人员容易犯错误,知道在哪个逻辑结构、哪个接口或函数,甚至是从内存的管理机制上都可以找出问题。
软件开发所用的程序设计语言有很多种,所以要精通其中一门,其他能看懂代码,会对你的测试工作有更好的帮助,另外也会帮助开发人员进行快速缺陷定位。
而且在软件测试工作中,要编写一些辅助测试的小工具,都需要有软件开发基础。
象测试过程管理工具、测试用例管理工具、缺陷跟踪工具、性能检测工具等等。
不要老是认为软件开发难,什么事都是从不会到会,从不精通到精通,都需要一个过程。
没有人一生下来就什么都会的,都需要自己的不断努力才能成功。
(2)网络技术软件是从字符界面产品发展到图形界面产品,从单机版到网络版(C/S结构和B/S结构),经历了一个漫长的过程。
计算机网络的出现,改变了现实社会中人们的相互沟通方式,把一个小小的地球变成了一个地球村。
所以,目前所有的软件产品都从传统的单机模式向网络模式转变,网络技术就更加关键。
目前网络的发展,使得网络速度进一步提高。
目前,家庭网速达到1M~2Mbps,企业达到4Mbps,据说要到2012年家庭的网络速度要达到20Mbps。
那么网络硬件从传统的电缆到目前的光纤技术、无线通信技术。
从目前的发展速度,三网(电信网、电视网、计算机网络)合并是迟早的事情。
网络硬件协议的测试,也是网络设备生产商要做的工作。
(3)数据库技术现在的数据信息是海量的。
在目前的软件产品中,底层架构中就需要有数据库进行数据存储,那么对数据的增删改查的操作是软件测试人员必须要必备的技能。
数据库测试也是测试技术的一种。
(4)测试与质量保证技术精通软件测试理论,熟悉软件测试流程,理解软件测试的哲学思想,掌握软件测试每个阶段的文档编写技巧,掌握软件测试的策略与各种测试方法,掌握测试用例的设计方法。
掌握单元测试、集成测试、确认测试、系统测试、验收测试等每个阶段的测试技术。
软件质量保证知识、测试项目管理、测试团队建设知识也是必须要具备的。
掌握软件测试自动化工具,理解软件测试自动化测试框架,能够学会如何进行测试项目管理、回归测试以及性能测试,能够把性能缺陷进行定位。
软件测试还是一个崭新的学科,还没有形成一个独有的知识体系,还需要我们不断的研究与实践。
(5)行业知识目前软件测试涉及的行业是多种多样的,从金融产品到电信、游戏、汽车、杀毒、网站、企业管理、学校教育、本地化产品等等,各行各业的软件产品都需要大量的测试,所以相关行业知识的储备也是必须的。
(6)职场规范职场礼仪是必须的,你是否适合某个企业,能否融入这个企业,基本的职场规范是要学习的。
必要、有效的沟通也是软件测试人员所必须掌握的技巧。
常用的软件测试方法和工具
工业标准级负载测试工具LoadrunnerLoadRunner 是一种预测系统行为和性能的负载测试工具。
通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。
通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
自动化功能测试工具AutoRunnerAutoRunner是黑盒测试工具,可以用来完成功能测试、回归测试、每日构建测试与自动回归测试等工作。
是具有脚本语言的、提供针对脚本完善的跟踪和调试功能的、支持IE测试和Windows native测试的自动化测试工具,是目前国内最好的银行业务测试工具。
全球测试管理系统testdirectorTestDirector 是业界第一个基于Web的测试管理系统,它可以在您公司内部或外部进行全球范围内测试的管理。
通过在一个整体的应用系统中集成了测试管理的各个部分,包括需求管理,测试计划,测试执行以及错误跟踪等功能,TestDirector极大地加速了测试过程。
测试用例管理工具TestCenterTestCenter是一款功能强大测试管理工具,它实现了测试需求管理、测试用例管理、测试业务组件管理、测试计划管理、测试执行、测试结果日志察看、测试结果分析、缺陷管理,并且支持测试需求和测试用例之间的关联关系,可以通过测试需求索引测试用例。
终端自动化测试工具TARTAR适用于VT100、VT220等标准的应用系统,支持命令行模式和窗口模式(使用Cursors编写的应用程序)。
支持针对终端应用的自动录制。
支持连续录制和单独的窗口录制。
支持的窗口组件:栏位、表格、对话框、窗口等。
功能测试工具Rational RobotBorland SilkTest 2006属于软件功能测试工具,是Borland公司所提出软件质量管理解决方案的套件之一。
这个工具采用精灵设定与自动化执行测试,无论是程序设计新手或资深的专家都能快速建立功能测试,并分析功能错误。
性能测试工具WASMicrosoft Web Application Stress Tool 是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。
透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响。
自动化白盒测试工具JtestJtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。
parasoft同时出品的还有C++ test,是一款C/C++白盒测试工具。
功能和性能测试的工具JMeterJMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。
性能测试和分析工具WEBLODEwebload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能。
企业级自动化测试工具WinRunnerMercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。
通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。
测试经理和PM对TC进行Review:敏捷测试流程总结: 在敏捷方法中,XP方法强调测试在整个项目开发过程中的重要性。
针对敏捷开发方法的敏捷测试不同于以往针对传统开发模式的测试,在敏捷团队中,测试是整个项目组的“车头灯”,它告诉大家现在到哪了,正在往哪个方向走。
测试员为项目组提供丰富的信息,使得项目组基于这些可靠的信息作出正确的决定。
不仅是测试员要保证质量,而是整个项目组的每一个人都要对质量负责。
测试员不跟开发人员纠缠错误,而是帮助他们找到目标,共同为达到项目的最终目标而努力。
敏捷测试也需要高度迭代工作、频繁得到客户的反馈,需要动态调整测试计划、测试的执行。
并且,敏捷测试人员参与到了更多的敏捷生产活动中,积极的影响了团队做出的决定和计划。
根据公司项目目前采用的敏捷开发模式,相应的敏捷测试建议采用以下流程:1. 验证需求和设计 需求和设计具体来说一般包括:(1)由项目经理根据需求文本而编写的功能设计文本(Functional Design Specification);(2)由开发人员根据功能文本而编写的实施设计文本(Implementation Design Specification)包括(Architecture Document, Project Scope Statement, Use Case )。
作为测试人员,审核重点是检查文本对用户需求定义的完整性、严密性和功能设计的可测性. 在测试初期,测试人员要学会做静态测试,做好需求分析,做好对设计逻辑的分析。
测试人员要更多的思考需求的可实现性,将自身作为第一用户积极参与项目和系统的需求分析,设计和开发。
积极地参与前期工作,并迅速反馈给设计和开发其静态测试结果。
要尽早的开始测试,不要等待到功能完全做好才开始。
产出物:测试需要提交评审结果文档,可以让测试更多的参与DB Design,框架的评审中来2. 测试计划,测试用例2.1 编写计划、测试...
软件测试的执行有什么方法和措施?
1. 执行前,动员会是必要的,如同打战,要鼓舞士气,更重要阐述策略,回答大家的问题,使测试计划、测试范围和所有测试项目的定义都十分清楚。
2. 严格审查测试环境,包括硬件型号、网络拓扑结构、网络协议、防火墙或代理服务器的设置、服务器的设置、应用系统的版本,包括被测系统以前发布的各种版本和不定包、以及相关的或依赖性的产品。
3. 将要执行的所有测试用例进行分类,基于测试策略和历史数据的统计分析,包括测试策略和缺陷的关联关系,构造有效的测试套件(Test Suite),然后在此基础上建立要执行的测试任务,这样任务的分解有助于进度和质量的有效控制,减少风险。
4. 所有测试用例、测试套件、测试任务和测试执行结果,都通过测试管理系统进行管理,使之测试执行的操作、过程记录在案,具有良好的可跟踪性、控制性和追溯性,容易控制好测试进度和质量。
5. 要确保每一个测试人员理解测试策略、测试目标,对测试进程进行审查(Audit),确保测试策略得到执行,可以通过一些奖励手段进行引导。
测试经理、组长要用于承担风险,使之测试人员有发挥、想象的空间,但同时也要给予适当的压力,提高工作效率和责任心。
6. 缺陷的跟踪和管理一般由数据库系统来执行,容易对缺陷进行跟踪、统计分析和趋势预测,并设定一些有效的规则和流程来配合测试执行,如通过系统自动发出邮件给相应的开发人员和测试人员,使得任何缺陷都不会错过,并能得到及时处理。
而且事先建立基于缺陷跟踪系统的缺陷报表、缺陷趋势曲线,对各模块、各测试人员、整体项目等进行实时跟踪。
7. 进行常规的缺陷审查,如Daily Bg eview, ug scu meeting,包括Bug的严重性、Bug的描述、Bug修正的反应速度等,及时发现问题、纠正问题,使整个测试进程在控制轨道上发展。
8. 对每个阶段的测试结果进行分析,保证阶段性的测试任务得到完整的执行并达到预定的目标。
9. 良好的沟通,不仅和测试人员保持经常的沟通,还要求和项目组的其他人员保持有效的沟通,如每周例会,可以及时发现测试中问题或不正常的现象。
转载请注明出处51数据库 » 试总结软件测试策略.