软件测试模型包含软件测试基础知识_第1页
软件测试模型包含软件测试基础知识_第2页
软件测试模型包含软件测试基础知识_第3页
软件测试模型包含软件测试基础知识_第4页
软件测试模型包含软件测试基础知识_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件测试模型1、V模型在软件测试方面,V模型是最广为人知的模型,尽管很多富有实际经验的测试人员还是不太熟悉V模型,或者其它的模型。V模型已存在了很长时间,和瀑布开发模型有着一些共同的特性,由此也和瀑布模型一样地受到了批评和质疑。V模型中的过程从左到右,描述了基本的开发过程和测试行为。V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。关求分析要校测试柢妾设计详缓设计系统满试集成潸试2、Wf型V模型的局限性在于没有明确地说明早期的测试,无法体现“尽早地和不断地进行软件测试”的原则。在V模型中增加软件各开发阶段应同步进行的测试,演

2、化为W模型(如下图)。在模型中不难看出,开发是“V,测试是与此并行的V。基于“尽早地和不断地进行软件测试”的原则,在软件的需求和设计阶段的测试活动应遵循IEEE1012-1998软件验证与确认(V&V的原则。W真型由Evolutif公司提出,相对于V模型,W真型更科学。W真型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。W模型也有局限性。W模型和V模型都把软件的开发视为需求、设计、编码等一系列串行的活动,无法支持迭代、自发性以及变更调整。3、X模型X模型也是对V模型的改进,X模型提出

3、针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序。X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终成为可执行的程序,然后再对这些可执行程序进行测试。己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。由图中可见,X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。但这样可能对测试造成人力、物力和财力的浪费,对测试员的熟练程度要求比较高。4、H模型

4、H模型中,软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。软件测试可以尽早的进行,并且可以根据被测物的不同而分层次进行。这个示意图演示了在整个生产周期中某个层次上的一次测试“微循环”。图中标注的其它流程可以是任意的开发流程,例如设计流程或者编码流程。也就是说,只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行了。H模型揭示了一个原理:软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。H模型指出软件测试要尽早准备,尽早执行。不同的测试活动可以是按照某个次序先后进行的,但也可能是反复

5、的,只要某个测试达到准备就绪点,测试执行活动就可以开展。5、前置模型F际ihHityAnalysisFeasibilityReport$网2藻AnalysisSystemDesignTechnicalTestPlanBusinessRequirementsRequirementsBasedTestFormalReviewBtack/WhiteBoxUnUTestsIntegrationTestDesignSpecsOperations&Maint.LifeCycle)ImiJlementationAcceptanceTestPlanAcceptanceCriteriaAcceptanceTes

6、tSystem,SpecialTestsDev用叩rnemIndependent(QA)Te$i$CodDebugInformalRev,前置测试模型则体现了开发与测试的结合,要求对每一个交付内容进行测试。前置测试模型是一个将测试和开发紧密结合的模型,此模型将开发和测试的生命周期整合在一起,随项目开发生命周期从开始到结束每个关键行为。前置测试模型体现了以下的要点:(一)开发和测试相结合前置测试模型将开发和测试的生命周期整合在一起,标识了项目生命周期从开始到结束之间的关键行为。并且表示了这些行为在项目周期中的价值所在。如果其中有些行为没有得到很好的执行,那么项目成功的可能性就会因此而有所降低。如

7、果有业务需求,则系统开发过程将更有效率。在没有业务需求的情况下进行开发和测试是不可能的。而且,业务需求最好在设计和开发之前就被正确定义。(二)对每一个交付内容进行测试每一个交付的开发结果都必须通过一定的方式进行测试。源程序代码并不是唯一需要测试的内容。在图中的绿色框表示了其它一些要测试的对象,包括可行性报告、业务需求说明,以及系统设计文档等。这同V模型中开发和测试的对应关系是相一致的,并且在其基础上有所扩展,变得更为明确。前置测试用K型包括2项测试计划技术:其中的第一项技术是开发基于需求的测试用例。这并不仅仅是为以后提交上来的程序的测试做好初始化准备,也是为了验证需求是否是可测试的。这些测试可

8、以交由用户来进行验收测试,或者由开发部门做某些技术测试。很多测试团体都认为,需求的可测试性即使不是需求首要的属性,也应是其最基本的属性之一。因此,在必要的时候可以为每一个需求编写测试用例。不过,基于需求的测试最多也只是和需求本身一样重要。一项需求可能本身是错误的,但它仍是可测试的。而且,你无法为一些被忽略的需求来编写测试用例。第二项技术是定义验收标准。在接受交付的系统之前,用户需要用验收标准来进行验证。验收标准并不仅仅是定义需求,还应在前置测试之前进行定义,这将帮助揭示某些需求是否正确,以及某些需求是否被忽略了。同样的,系统设计在投入编码实现之前也必须经过测试,以确保其正确性和完整性。很多组织

9、趋向于对设计进行测试,而不是对需求进行测试。Goldsmith曾提供过15项以上的测试方法来对设计进行测试,这些组织也只使用了其中很小的一部分。在对设计进行的测试中有一项非常有用的技术,即制订计划以确定应如何针对提交的系统进行测试,这在处于设计阶段并即将进入编码阶段时十分有用。(三)在设计阶段进行计划和测试设计设计阶段是做测试计划和测试设计的最好时机。很多组织要么根本不做测试计划和测试设计,要么在即将开始执行测试之间才飞快地完成测试计划和设计。在这种情况下,测试只是验证了程序的正确性,而不是验证整个系统本该实现的东西。测试有2种主要的类型,这2种类型都需要测试计划。在V模型中,验收测试最早被定

10、义好,并在最后执行,以验证所交付的系统是否真正符合用户业务的需求。与V模型不同的是,前置测试模型认识到验收测试中所包含的3种成份,其中的2种都与业务需求定义相联系:即定义基于需求的测试,以及定义验收标准。但是,第三种则需要等到系统设计完成,因为验收测试计划是由针对按设计实现的系统来进行的一些明确操作定义所组成,这些定义包括:如何判断验收标准已经达到,以及基于需求的测试已算成功完成。技术测试主要是针对开发代码的测试,例如V模型中所定义的动态的单元测试,集成测试和系统测试。另外,前置测试还提示我们应增加静态审查,以及独立的QA测11tQA测试通常跟随在系统测试之后,从技术部门的意见和用户的预期方面

11、出发,进行最后的检查.同样的还有特别测试。我们取名特别测试,并把该名称作为很多测试的一个统称,这些测试包括负载测试、安全性测试、可用性测试等等,这些测试不是由业务逻辑和应用来驱动的。对技术测试最基本的要求是验证代码的编写和设计的要求是否相一致。一致的意思是系统确实提供了要求提供的,并且系统并没有提供不要求提供的。技术测试在设计阶段进行计划和设计,并在开发阶段由技术部门来执行。(四)测试和开发结合在一起前置测试将测试执行和开发结合在一起,并在开发阶段以编码-测试-编码-测试的方式来体现。也就是说,程序片段一旦编写完成,就会立即进行测试。普通情况下,先进行的测试是单元测试,因为开发人员认为通过测试

12、来发现错误是最经济的方式。但也可参考X模型,即一个程序片段也需要相关的集成测试,甚至有时还需要一些特殊测试。对于一个特定的程序片段,其测试的顺序可以按照V模型的规定,但其中还会交织一些程序片段的开发,而不是按阶段完全地隔离。在技术测试计划中必须定义好这样的结合。测试的主体方法和结构应在设计阶段定义完成,并在开发阶段进行补充和开版。这尤其会对基于代码的测试产生影响,这种测试主要包括针对单元的测试和集成测试。不管在哪种情况下,如果在执行测试之前做一点计划和设计,都会提高测试效率,改善测试结果,而且对测试重用也更加有利。(五)让验收测试和技术测试保持相互独立验收测试应该独立于技术测试,这样可以提供双

13、重的保险,以保证设计及程序编码能够符合最终用户的需求。验收测试既可以在实施阶段的第一步来执行,也可以在开发阶段的最后一步执行。前置测试模型提倡验收测试和技术测试沿循2条不同的路线来进行,每条路线分别地验证系统是否能够如预期的设想进行正常工作。这样,当单独设计好的验收测试完成了系统的验证,我们即可确信这是一个正确的系统。(六)反复交替的开发和测试在项目中从很多方面可以看到变更的发生,例如需要重新访问前一阶段的内容,或者地跟踪并纠正以前提交的内容,修复错误,排除多余的成分,以及增加新发现的功能,等等。开发和测试需要一起反复交替地执行。模型并没有明确指出参与的系统部分的大小。这一点和V模型中所提供的

14、内容相似。不同的是,前置测试模型对反复和交替进行了非常明确的描述。(七)发现内在的价值前置测试能给需要使用测试技术的开发人员、测试人员、项目经理和用户等带来很多不同于传统方法的内在的价值。与以前的方法中很少划分优先级所不同的是,前置测试用较低的成本来及早发现错误,并且充分强调了测试对确保系统的高质量的重要意义。前置测试代表了整个对测试的新的不同的观念。在整个开发过程中,反复使用了各种测试技术以使开发人员、经理和用户节省其时间,简化其工作。通常情况下,开发人员会将测试工作视为阻碍其按期完成开发进度的额外的负担。然而,当我们提前定义好该如何对程序进行测试以后,我们会发现开发人员将节省至少20%勺时

15、间。虽然开发人员很少意识到他们的时间是如何分配的,也许他们只是感觉到有一大块时间从重新修改中节省下来可用来进行其它的开发。保守地说,在编码之前对设计进行测试可以节省总共将近一半的时间,这可以从以下方面体现出来:针对设计的测试编写是检验设计的一个非常好的方法,由此可以及时避免因为设计不正确而造成的重复开发及代码修改。通常情况下,这样的测试可以使设计中的逻辑缺陷凸显出来。另一方面,编写测试用例还能揭示设计中比较模糊的地方。总的来说,如果你不能勾画出如何对程序进行测试,那么程序员很可能也很难确定他们所开发的程序怎样才算是正确的。测试工作先于程序开发而进行,这样可以明显地看到程序应该如何工作,否则,如

16、果要等到程序开发完成后才开始测试,那么测试只是查验开发人员的代码是如何运行的。而提前的测试可以帮助开发人员立刻得到正确的错误定位。在测试先于编码的情况下,开发人员可以在一完成编码时就立刻进行测试。而且,她会更有效率,在同一时间内能够执行更多的现成的测试,她的思路也不会因为去搜集测试数据而被打断。即使是最好的程序员,从他们各自的观念出发,也常常会对一些看似非常明确的设计说明产生不同的理解。如果他们能参考到测试的输入数据及输出结果要求,就可以帮助他们及时纠正理解上的误区,使其在一开始就编写出正确的代码。前置测试定义了如何在编码之前对程序进行测试设计,开发人员一旦体会到其中的价值,就会对其表现出特别

17、的欣赏。前置方法不仅能节省时间,而且可以减少那些令他们十分厌恶的重复工作。做一个专业的软件测试员同样是测试人员,做着可能相同的工作,作出的结果也可能大致相同。那么以什么作为你工作更加专业的区分呢?测试的工作用例编写,测试执行,bug上报,以及功能点测试完成度控制。这些方面都可以体现我们的劳动价值。测试用例的编写一一当别人不愿意编写测试用例,甚至觉得编写用例是浪费时间时,倘若你体会到了用例编写在测试过程中带来的功能点覆盖的全面性。那么你就站在了比他人更高的高度。细到用例的每条,当别人只是简单的划分出这是某个测试点,而你已经清晰的知道这个测试点是使用什么方法划分出来的测试点-例如边界值,等价类,因

18、果图。那么你的确要比那些简单罗列测试点的人技能上要更高一些。当别人还因为测试功能点未全面,而在赶工期忙碌时,倘若你能够很坦然的根据自己的测试用例通过率确定已测试功能的质量时,你就会知道你站在了更高的台阶上。这些都是理论,测试用例要写的好,要覆盖面全,那是需要思考的,是绝对全心投入的思考。是一种创作,不是你拷贝策划案里的条目就能够理清的。而是通过把策划案中的功能点不断的划分,直至精确到某个输入和输出结果。这是一个急需要脑力劳动的过程,一方面要肯定策划案中的正确的内容,另外一方面要考虑这些正常的内容是否存在何种异常的操作,而任何一个异常的内容都是不允许没有输出结果的。测试的执行一一不是所有的用例都

19、会精确到点击鼠标左右键。所以测试执行的速度反应着一个测试人员基本功的扎实程度。同样是一个功能我们会发现,熟悉系统的测试人员在执行测试过程中往往比不熟悉系统的测试人员快。但是不熟悉系统本身就是测试人员自身的素质问题。没有任何借口,既然你是做这个的,那么允许你开始的懵懂,却不允许你一而再,再而三的愚蠢。想要比别人突出,那么好好熟悉你得系统,最好做到别人知道的你清楚,别人不知道的你知道。bug的上报一一其实就是把bug的出现方法和具体出现导致的问题说清楚的过程。语言要简洁,但是不能简洁到别人看不懂。要步骤分明,要在执行测试过程中不断尝试,直至把bug的重现过程缩短到最短。可能会浪费你很多时间,但是你

20、要看到这个的另外一个好处。当别的测试员跟程序人员重现bug,总是找不到重点步骤时,你已经深刻理解到要获得程序人员的重视,bug的步骤越短,越是能够得到程序人员的赞许。这个赞许积蓄到一定时间就成了你自负的资本。测试结果的汇报也很重要,清晰而明了的告诉程序人员或者测试主管,用例的执行情况,需要解决的问题-最好指出你问题在用例内的出处。这样有便于程序人员养成查看你用例的习惯。一般用例生成和程序实现是同步进行的,在这个过程中,如果程序人员发现你用例内有的测试点而自己没有实现,那么可以节省很多时间。当他多次出现你用例有的内容,他没有实现到时这种深刻的记忆将驱使他检查你的用例。测试时间点的把控一一根据测试

21、用例中测试点的执行难易程序,以及测试用例中测试点的条数可以初步判定功能点的测试完成时间。最初这个是需要积累的,当用例达到某个数量,当用例难度与其它用例执行难度可进行比较时就很容易把控时间点。最好的时间把控不是预期3天而实际只测试1天半,也不是预期3天实际测试了5天。最好的时间点应该控制在半个工作日内。测试点的时间把控对于测试人员来说也很重要。有时如果为了进度需要宁可多几个人一起来完成测试,也不可以因为时间点的问题导致版本发布延迟。测试工程师需要什么技能或者具有什么素质才是合格的?很多年轻或者刚刚从事测试工作的工程师,经常会问:“测试工程师需要什么技能或者具有什么素质才是合格的?”与开发人员相比

22、,测试人员不但需要一技之长,还需要掌握诸如操作系统、数据库、网络等多方面的知识。经过这几年的发展,国内IT公司的测试水平有了很大的提高,但是与此同时,很多测试工程师也迎来了个人的发展瓶颈:很多人从测试工程师做到了测试经理的职位,不知道下一步如何发展;或者每天机械地从事着功能测试工作。根据作者多年的经验,一个有竞争力的测试人员要具有下面三个方面的素质:1 .计算机专业技能计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件。尽管没有任何IT背景的人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必不可少的。计算机专业技能主要包

23、含三个方面:测试专业技能现在软件测试已经成为一个很有潜力的专业。要想成为一名优秀的测试工程师,首先应该具有扎实的专业基础,这也是本书的编写目的之一。因此,测试工程师应该努力学习测试专业知识,告别简单的“点击”之类的测试工作,让测试工作以自己的专业知识为依托。测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主。测试专业技能涉及的范围很广:既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、功能测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。软件编程技能“测试人员是否需要编程?”可以说是测试人员最常提出的问题

24、之一。实际上,由于在我国开发人员待遇普遍高于测试人员,因此能写代码的几乎都去做开发了,而很多人则是因为做不了开发或者不能从事其它工作才“被迫”从事测试工作。最终的结果则是很多测试人员只能从事相对简单的功能测试,能力强一点的则可以借助测试工具进行简单的自动化测试(主要录制、修改、回放测试脚本)。软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的开发经验。因此,测试人员要想得到较好的职业发展,必须能够编写程序。只有能给编写程序,才可以胜任诸如单元测试、集成测试、性能测试等难度较大的测试工作。止匕外,对软件测试人员的编程技能要求也有别于开发人员:测试人员编写的程序应着眼于

25、运行正确,同时兼顾高效率,尤其体现在与性能测试相关的测试代码编写上。因此测试人员要具备一定的算法设计能力。依据作者的经验,测试工程师至少应该掌握Java、C#C+之类的一门语言以及相应的开发工具。网络、操作系统、数据库、中间件等知识:与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。由于测试中经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要掌握更多网络、操作系统、数据库等知识。在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是测试工作中经常遇到的知识。操作

26、系统和中间件方面,应该掌握基本的使用以及安装、配置等。例如很多应用系统都是基于Unix、linux来运行的,这就要求测试人员掌握基本的操作命令以及相关的工具软件。而WebLogic、Websphere等中间件的安装、配置很多时候也需要掌握一些。数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库。因此不但要掌握基本的安装、配置,还要掌握SQL测试人员至少应该掌握Mysql、MSSqlserverOracle等常见数据库的使用。作为一名测试人员,尽管不能精通所有的知识,但要想做好测试工作,应该尽可能地去学习更多的与测试工作相关的知识。2 .行业知识行业主要指测试人员所在企业涉及的行业领域

27、,例如很多IT企业从事石油、电信、银行、电子政务、电子商务等行业领域的产品开发。行业知识即业务知识,是测试人员做好测试工作的又一个前提条件,只有深入地了解了产品的业务流程,才可以判断出开发人员实现的产品功能是否正确。很多时候,软件运行起来没有异常,但是功能不一定正确。只有掌握了相关的行业知识,才可以判断出用户的业务需求是否得到了实现。行业知识与工作经验有一定关系,通过时间即可以完成积累。3 .个人素养作为一名优秀的测试工程师,首先要对测试工作有兴趣:测试工作很多时候都是显得有些枯燥的,因此热爱测试工作,才更容易做好测试工作。因此,除了具有前面的专业技能和行业知识外,测试人员应该具有一些基本的个

28、人素养,即下面的“五心”。专心:主要指测试人员在执行测试任务的时候要专心,不可一心二用。经验表明,高度集中精神不但能够提高效率,还能发现更多的软件缺陷,业绩最棒的往往是团队中做事精力最集中的那些成员。细心:主要指执行测试工作时候要细心,认真执行测试,不可以忽略一些细节。某些缺陷如果不细心很难发现,例如一些界面的样式、文字等。耐心:很多测试工作有时候显得非常枯燥,需要很大的耐心才可以做好。如果比较浮躁,就不会做到“专心”和“细心”,这将让很多软件缺陷从你眼前逃过。责任心:责任心是做好工作必备的素质之一,测试工程师更应该将其发扬光大。如果测试中没有尽到责任,甚至敷衍了事,这将会把测试工作交给用户来

29、完成,很可能引起非常严重的后果。自信心:自信心是现在多数测试工程师都缺少的一项素质,尤其在面对需要编写测试代码等工作的时候,往往认为自己做不到。要想获得更好的职业发展,测试工程师们应该努力学习,建立能“解决一切测试问题”的信心。“五心”只是做好测试工作的基本要求,测试人员应该具有的素质还很多。例如测试人员不但要具有团队合作精神,而且应该学会宽容待人,学会去理解“开发人员”,同时要尊重开发人员的劳动成果一一开发出来的产品。软件测试面试题目01.为什么要在一个团队中开展软件测试工作?因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就

30、需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。02.您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?我曾经做过web测试,后台测试,客户端软件,其中包括功能测试,性能测试,用户体验测试。最擅长的是功能测试。03.您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同04.的测试类型的区别与联系(如功能测试、性能测试,)测试类型有:功能测试,性能测试,界面测试。功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试

31、软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。界面测试,界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成

32、相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。区别在于,功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。界面测试更关注于用户体验上,用户使用该产品的时候是否易用,是否易懂,是否规范(快捷键之类的)是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹出警告)?做某个性能测试的时候

33、,首先它可能是个功能点,首先要保证它的功能是没问题的,然后再考虑该功能点的性能测试05.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。

34、黑盒测试主要是为了发现以下几类错误:1、是否有不正确或遗漏的功能?2、在接口上,输入是否能正确的接受?能否输出正确的结果?3、是否有数据结构错误或外部信息(例如数据文件)访问错误?4、性能上是否能够满足要求?5、是否有初始化或终止性错误?软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:1、对程序模块的所有独立的执行路径至

35、少测试一遍。2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。3、在循环的边界和运行的界限内执行循环体。4、测试内部数据结构的有效性,等等。单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:

36、两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。(常见的联调测试)系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用

37、户将其用于执行软件的既定功能和任务。验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。06.测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实

38、施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)07.您认为做好测试计划工作的关键是什么?1 .明确测试的目标,增强测试计划的实用性编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高

39、的实用性,便于使用,生成的测试结果直观、准确2 .坚持“5W”规则,明确内容与过程“5W”规则指的是“What(做什么)、“Why(为什么做)、“When(何时做)、“Where(在哪里)、“How(如何做)利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。3 .采用评审和更新机制,保证测试计划满足实际需求测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起

40、测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。4 .分别创建测试计划与测试详细规格、测试用例应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。08.您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。1 .等价类划分划分等价类:等价类是指某个输入域的子集合.在该子集合中,各个输入

41、数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.2 .边界值分析法边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入车出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界就是应着重测试的边界情况

42、.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据而不是选取等价类中的典型值或任意值作为测试数据3 .错误推测法基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法.错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例.例如,在单元测试时曾列出的许多在模块中常见的错误.以前产品测试中曾经发现的错误等,这些就是经验的总结.还有,输入数据和输出数据为0的情况.输入表格为空格或输入表格只有一行.这些都是容易发生错误的情况.可选择这些情况下的例子作为测试用例.4 .因果图方法前面介绍的等价类划分方法和边界值分析方法,都是

43、着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等.考虑输入条件之间的相互组合,可能会产生一些新的情况.但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多.因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例.这就需要利用因果图(逻辑模型).因果图方法最终生成的就是判定表.它适合于检查程序输入条件的各种组合情况.08.您认为做好测试用例设计工作的关键是什么?白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测

44、试,以最少的用例在合理的时间内发现最多的问题09.请以您以往的实际工作为例,10 .详细的描述一次测试用例设计的完整的过程。就说最近的这次网站功能的测试吧首先:得到相关文档(需求文档和设计文档),理解需求和设计设计思想后,想好测试策略(测试计划简单点就OK了),考虑到测试环境,测试用例,测试时间等问题。第二步:设计测试用例,测试策略是:把网站部分的功能点测试完,然后在进行系统测试(另外个模块呢有另一个测试人员负责,可以进行联调测试),网站模块的测试基本是功能测试和界面测试(用户并发的可能性很小,所以不考虑):这次的网站的输入数据呢是使用数据库中的某张表记录,如果表中某一数据记录中新加进来的(还

45、没有被处理的,有个标志位),网站启动后会立刻去刷那张表,得到多条数据,然后在进行处理。处理过程中,会经历3个步骤,网站才算完成了它的任务。有3个步骤呢,就可以分别对这3个步骤进行测试用例的设计,尽量覆盖到各种输入情况(包括数据库中的数据,用户的输入等),得出了差不多50个用例。界面测试,也就是用户看的到的地方,包括发送的邮件和用户填写资料的页面展示。第三步:搭建测试环境(为什么这个时候考虑测试环境呢?因为我对网站环境已经很熟了,只有有机器能空于下来做该功能测试就可以做了),因为网站本身的环境搭建和其他的系统有点不同,它需要的测试环境比较麻烦,需要web服务器(Apache,tomcat),不过

46、这次需求呢,网站部分只用到了tomcat,所以只要有tomcat即可第四步:执行测试。11 .您以往是否曾经从事过性能测试工作?如果有,12 .请尽可能的详细描述您以往的性能测试工作的完整过程。是的,曾经做过网站方面的性能测试,虽然做的时间并不久(2个月吧),当时呢,是有位网站性能测试经验非常丰富的前辈带着我一起做。性能测试类型包括负载测试,强度测试,容量测试等负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。强度测试:强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况。容量测试:确定系统可处理同时在线的最大用户数在网站流量逐渐加大的情况下,开始考虑做

47、性能测试了,首先要写好性能测试计划,根据运营数据得出流量最大的页面(如果是第一次的话,一般是首页,下载页,个人帐户页流量最大,而且以某种百分比),Web服务器指标指标:*AvgRps:平均每秒钟响应次数=总请求时间/秒数;* SuccessfulRounds:成功的请求;* FailedRounds:失败的请求;* SuccessfulHits:成功的点击次数;* FailedHits:失败的点击次数;* HitsPerSecond:每秒点击次数;* SuccessfulHitsPerSecond:每秒成功的点击次数;* FailedHitsPerSecond:每秒失败的点击次数;* Atte

48、mptedConnections:尝试链接数;13 .您在从事性能测试工作时,14 .是否使用过一些测试工具?如果有,15 .请试述该工具的工作原理,16 .并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。17 .您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?18 .在您以往的工作中,19 .一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?20 .您以往所从事的软件测试工作中,21 .是否使用了一些工具来进行软件缺陷(Bug)的管理?如果有,22 .请结合该工具描述软件缺陷(Bug)跟踪管理的流程。23 .您认为在测试人员

49、同24 .开发人员的沟通过程中,25 .如何提高沟通的效率和改善沟通的效果?维持测试人员同26 .开发团队中其他成员良好的人际关系的关键是什么?27 .在您以往的测试工作中,28 .最让您感到不29 .满意或者不30 .堪回首的事情是什么?您是如何来对待这些事情的?31 .在即将完成这次笔试前,32 .您是否愿意谈一些自己在以往的学习和工作中获得的工作经验和心得体会?(可以包括软件测试、过程改进、软件开发或者与此无关的其他方面)33 .你对测试最大的兴趣在哪里?为什么?最大的兴趣就是测试有难度,有挑战性!做测试越久越能感觉到做好测试有多难。曾经在无忧测试网上看到一篇文章,是关于如何彳好一名测试

50、工程师。一共罗列了11,12点,有部分是和人的性格有关,有部分需要后天的努力。但除了性格有关的1,2点我没有把握,其他点我都很有信心做好它。刚开始进入测试行业时,对测试的认识是从无忧测试网上了解到的一些资料,当时是冲着做测试需要很多技能才能做的好,虽然入门容易,但做好很难,比开发更难,虽然当时我很想做开发(学校专业课我基本上不缺席,因为我喜欢我的专业),但看到测试比开发更难更有挑战性,想做好测试的意志就更坚定了。不到一年半的测试工作中,当时的感动和热情没有减退一点(即使环境问题以及自身经验,技术的不足,做测试的你一定也能理解)。我觉得做测试整个过程中有2点让我觉得很有难度(对我来说,有难度的东

51、西我就非常感兴趣):第一是测试用例的设计,因为测试的精华就在测试用例的设计上了,要在版本出来之前,把用例写好,用什么测试方法写?(也就是测试计划或测试策略),如果你刚测试一个新任务时,你得花一定的时间去消化业务需求和技术基础,业务需求很好理解(多和产品经理和开发人员沟通就能达到目的),而技术基础可就没那么简单了,这需要你自觉的学习能力,比如说网站吧,最基本的技术知识你要知道网站内部是怎么运作的的,后台是怎么响应用户请求的?测试环境如何搭建?这些都需要最早的学好。至少在开始测试之前能做好基本的准备,可能会遇到什么难题?需求细节是不是没有确定好?这些问题都能在设计用例的时候发现。第二是发现BUG的

52、时候了,这应该是测试人员最基本的任务了,一般按测试用例开始测试就能发现大部分的bug,还有一部分bug需要测试的过程中更了解所测版本的情况获得更多信息,补充测试用例,测试出bug。还有如何发现bug?这就需要在测试用例有效的情况下,通过细心和耐心去发现bug了,每个用例都有可能发现bug,每个地方都有可能出错,所以测试过程中思维要清晰(测试过程数据流及结果都得看仔细了,bug都在里面发现的)c如何描述bug也很有讲究,bug在什么情况下会产生,如果条件变化一点点,就不会有这个bug,以哪些最少的操作步骤就能重现这个bug,这个bug产生的规律是什么?如果你够厉害的话,可以帮开发人员初步定位问题

53、。34 .你的测试职业发展是什么?测试经验越多,测试能力越高。所以我的职业发展是需要时间累积的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年累积测试经验,按如何做好测试工程师的11,12点要求自己,不断的更新自己改正自己,做好测试任务。35 .你自认为测试的优势在哪里?优势在于我对测试坚定不移的信心和热情,虽然经验还不够,但测试需要的基本技能我有信心在工作中得以发挥。36 .你以前工作时的测试流程是什么?公司对测试流程没有规定如何做,但每个测试人员都有自己的一套测试流程。我说下我1年来不断改正(自己总结,吸取同行的方法)后的流程吧。需求评审(有开发人员,产品经理,测试人员,项

54、目经理)需求确定(出一份确定的需求文档)开发设计文档(开发人员在开始写代码前就能输出设计文档)-想好测试策略,写出测试用例-发给开发人员和测试经理看看(非正式的评审用例)一接到测试版本一执行测试用例(中间可能会补充用例)提交bug(有些bug需要开发人员的确定(严重级别的,或突然发现的在测试用例范围之外的,难以重现的),有些可以直接录制进TD)开发人员修改(可以在测试过程中快速的修改)-回归测试(可能又会发现新问题,再按流程开始跑)。37 .当开发人员说不38 .是BUG时,39 .你如何应付?开发人员说不是bug,有2种情况,一是需求没有确定,所以我可以这么做,这个时候可以找来产品经理进行确

55、认,需不需要改动,3方商量确定好后再看要不要改。二是这种情况不可能发生,所以不需要修改,这个时候,我可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题,会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳。如果还是不行,那我可以给这个问题提出来,跟开发经理和测试经理进行确认,如果要修改就改,如果不要修改就不改。其实有些真的不是bug,我也只是建议的方式写进TD中,如果开发人员不修改也没有大问题。如果确定是bug的话,一定要坚持自己的立场,让问题得到最后的确认。23 .你为什么想离开目前的职务?因为公司运作情况并不理想,公司需要调整部门体系,公司考虑到缩减部门人员,

56、所以大批量的裁员(有6,7个),这是我的第一份工作,对公司也有较深的感情,因为在这里我找到了职业理想(就是测试),所以公司需要精简人员,我自愿退出。虽然很舍不得,但我将会有新的发挥能力的舞台。24:你对我们公司了解有多少?25:你找工作时,最重要的考虑因素为何?工作的性质和内容是否能让我发挥所长,并不断成长。26:为什么我们应该录取你?您可以由我过去的工作表现所呈现的客观数据,明显地看出我全力以赴的工作态度。27:请谈谈你个人的最大特色。我的坚持度很高,事情没有做到一个令人满意的结果,绝不罢手。28 .白箱测试和黑箱测试是什么?什么是回归测试?29。单元测试、集成测试、系统测试的侧重点是什么?30。设计用例的方法、依据有那些?31。一个测试工程师应具备那些素质和技能?32 .集成测试通常都有那些策略?33 .你用过的测试工具的主要功能、性能及其他?34 .一个缺陷测试报告的组成35 .基于WEB信息管理系统测试时应考虑的因素有哪些?36 .软件测试项目从什么时候开始,?为什么?37 .需求测试注意事项有哪些?38 .简述一下缺陷的生命周期39 .测试分析测试用例注意(事项)?你在你所在的公司是怎么开展测试工作的?是如何组织的?你认为理想的测试流程是什么样子?你是怎样工作的?软件测试活动的生命周期是什么?请画出软件测试活动的流程图?针对缺陷

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论