资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软件测试根底培训,不便透露,何为软件测试?,测试是发现并指出软件包含软件经过建模、需求、设计等阶段所产生的大量输出工件中存在缺陷的过程,这个过程指名和标注问题存在的正确位置,详细记录导致问题出现的操作步骤,及时储存当时的错误状态,以上组合在一起便于测试后问题能够准确再现,何为软件测试?Cont.,发现问题,记录问题,跟踪问题,再现问题,历史数据,何为软件测试?Cont.,发现问题:第一个行为,表示发现软件中存在的问题。,发现问题,记录问题,跟踪问题,再现问题,历史数据,何为软件测试?Cont.,记录问题:第二个行为,表示通过“发现问题行为操作指明和标注问题存在的正确位置,详细记录导致问题出现的操作步骤,及时储存当时的错误状态。,发现问题,记录问题,跟踪问题,再现问题,历史数据,何为软件测试?Cont.,跟踪问题:第三个行为表示通过“记录问题行为操作来跟踪和控制出现过的问题,直到问题关闭。由“再现问题引出的虚线代表着两个行为之间的关联是隐性存在的。,发现问题,记录问题,跟踪问题,再现问题,历史数据,何为软件测试?Cont.,再现问题:来源于“记录问题,表示这个过程只是为了演示曾经出现过的错误现象,值得注意的是有些错误现象我们可能没有方法再现了。,发现问题,记录问题,跟踪问题,再现问题,历史数据,何为软件测试?Cont.,比方,由于某次操作引起了操作系统的内存异常出错,我们记录了但是下一次演示的过程中不一定会再出现。虽然有这样的事情发生,但是我们有理由肯定错误还是存在的,只不过我们没有触发相应的条件。,何为软件测试?Cont.,历史数据:从“记录问题中挑选相同属性的错误,提高低次测试的针对性。因为是虚框,所以可以视为过程的一种补充。,发现问题,记录问题,跟踪问题,再现问题,历史数据,为什么需要软件测试?,测试可以保证你对需求和设计的理解与表达的正确性、实现的正确性以及运行的正确性,任何一个环节发生了问题都会在软件测试中表现出来。,为什么需要软件测试?Cont.,测试同时还可以防止无意识的行为引入一些将来可能出现的错误。,为什么需要软件测试?Cont.,测试也可以帮助设计代码及其用户界面,在编码之前测试人员就代表了客户,这个时候我们需要考虑程序会产生什么样的效果,而不用管它内部是如何工作的。,W模型,软件测试应在软件开发的需求分析阶段介入,需求分析,概要设计,详细设计,编码,代码集成,系统集成,软件验收,测试需求分析,测试概要设计,测试详细设计,单元测试,集成测试,系统测试,验收测试,软件开发过程,软件测试过程,软件测试目的?,软件测试是为了发现错误而执行程序的过程,测试是为了证明程序有错,而不是证明程序无错误,一个好的测试用例是在于它能发现至今未发现的错误,一个成功的测试是发现了至今未发现的错误的测试,by Grenford J.Myers The Art of software Testing,软件测试目的?Cont.,软件测试不以发现错误为唯一目的,查不出错误的测试并非没有价值。整个测试过程本身就是评定测试质量的一种方法。如果我们的测试过程是可持续增长的在运行屡次而未发现软件错误,这样多少都可以得出这样的结论:被测试软件已经完美了,或者就是需要遗弃这套无法正常工作的测试过程而重新构建一套了。,软件测试原那么:,1.尽早和不断的测试,2.彻底的测试不可能,3.软件测试是有风险的行为,4.并非所有的软件错误都能修复,5.合理安排测试方案,1.尽早和不断的测试,要尽早地测试,让测试人员在软件的需求和设计阶段就介入而不是等这些工作全部完成了才进行测试。发现软件错误的时间在整个软件过程阶段中越靠后,修复它所消耗的资源就越大,2.彻底的测试不可能,因为存在着输入量太大,输出结果太多,软件实现途径太多和软件实现没有客观标准,从不同的角度看软件缺陷的标准不同这些客观因素的存在,所以我们只能做到有限数量路径测试,如果时间不够,无法进行充分的测试怎么办?,我们要使用风险分析,确定测试的重点,需要考虑以下因素:,对于该工程的用途而言,哪种功能最重要?,哪种功能对用户最明显?,哪种功能对平安影响最大?,哪种功能对用户最有用?,在开发过程中,该应用软件的哪个局部最重要?,如果时间不够,无法进行充分的测试怎么办?Cont.,哪一局部代码最复杂,容易导致出现错误?,哪一局部的应用程序是在急迫或在惊恐的情况下开发出来的?,哪一局部程序与过去工程中引起问题的局部相类似/有关?,哪一局部程序与过去工程中需要大量维护的局部相类似/有关?,开发人员认为在软件中哪些局部是高风险的?,如果时间不够,无法进行充分的测试怎么办?Cont.,哪些问题能造成最差的发行?,哪些问题最能引起用户抱怨?,哪些测试可以容易地覆盖多种功能?,哪些测试在覆盖高风险局部的测试时使用时间最少?,3.软件测试是有风险的行为,我们可以通过对资源的调节,对测试程度和范围进行有效控制。原那么是尽量使用有限资源得到最大的回报。测试只能保证尽可能多地发现错误,不能保证发现所有的错误。,4.并非所有的软件错误都能修复,没有足够的时间工程进度不允许,不算真正的软件错误沟通理解上发生歧义,修复的风险太大导致更多的错误,修复本钱太高,不值得修复不太常用的功能,以上都需要经过严格的评估,整个评估决策过程由软件测试人员、工程管理人员和程序开发人员共同参与。,5.合理安排测试方案,好的测试方案树立了一个正确的测试目标、组合了各种有针对性的测试方法、罗列了所有可使用资源等。测试方案制定需要严谨,防止发生测试偏移现象。测试时间安排得尽量宽松也就是说我们需要预留工作余量,不要指望在极短的时间内完成一个全方位、高水平的测试。任何理想化的概念和无法确定的因素都应该被剔除。,软件测试策略,1.数据和数据库完整性测试,我们在数据测试中必须认真对待默认值、空白、Null值、零值和无效输入等情况。,软件测试策略 Cont.,2.功能测试,功能测试又称正确性测试,它检查软件的功能是否符合规格说明。根本方法是构造一些合理输入,检查是否得到期望的输出。,软件测试策略 Cont.,3.易用性原那么,易用性是人机交互中适应性、实用性和有效性的集中表达。,优秀UI常见的七个要素:,符合标准和标准;灵活性;正确性;直观性;舒适性;实用性;一致性。,软件测试策略 Cont.,4.性能测试与压力测试,压力测试:对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点极限点,来获得系统能提供的最大效劳级别的测试,性能测试:在交替进行负荷和强迫测试时常用的术语。性能测试关注的是系统的整体。它和通常所说的强度、压力/负载测试有密切的关系。所以压力和强度测试应该与性能测试一同进行。,性能测试和压力测试的区别?,他们具有不同的测试目的,压力测试是为了发现系统能支持的最大负载,他的前提是要求系统性能处在可以接受的范围内,比方经常规定的页面3秒钟内相应;所以一句话概括就是:在性能可以接受的前提下,测试系统可以支持的最大负载。,性能测试是为了检查系统的反映,运行速度等性能指标,他的前提是要求在一定负载下,如检查一个网站在100人同时在线的情况下的性能指标,每个用户是否都还可以正常的完成操作等。,测试需求分析,在整个软件测试生命周期中,制定工程的测试需求和方案阶段是测试工程的关键。在这个阶段,我们需要制定工程的测试需求,从而确定测试工程的范围和目标;我们也需要对工程进行规划,确定工程所需的资源、分配、风险、方法和策略等等,从而让整个工程有序地、高效的、受控地进行。,什么是测试需求:,人们在接受了一项任务后,总会先想到或去了解这项任务中我们需要做些什么,软件测试也是如此。在确定要开展一个测试工程后,我们就要开始了解“什么是我们要在该工程中进行测试的也就是测试需求。,在分析和制订测试需求时,我们要考虑的是:,测试范围:,在测试工程中,我们需要进行开发生命周期中各阶段测试单元测试、集成测试、系统测试和验收测试的全部还是具体那些阶段。,在分析和制订测试需求时,我们要考虑的是:,测试目标:,系统的哪些特性需要被测试以保证这些特性的质量。测试目标往往要根据目标特点进行分解细化,分解到一个可测试的粒度,即具体的特性;如果不经分解细化,笼统、整体或者概括性的特性不利于测试工作的开展。,要测试的系统特性往往包括:功能、性能、可用性、平安性、兼容性.,测试需求分析,测试需求主要包括两种类型:功能性需求和非功能性需求,功能性需求:,描述了系统的特征或系统提供的效劳。主要包括:,系统功能,业务流程,界面功能和风格,系统安装,等,非功能性需求:,描述了施加于系统操作上的约束。主要包括:,性能要求,平安性要求,兼容性要求,等,测试人员素质,五项优秀测试人员所拥有的重要特征:,Controlled可管理,有条理的、,Competent掌握测试技术的、,Critical专注于发现问题的、Comprehensive注重细节的、,Considerate能够和开发人员很好交流的,,简称为测试人员的5C职业特征。,by Bill Hetzel The Complete Guide to Software Testing,Chapter 11,测试人员素质 Cont.,根据5C我们可以对测试人员应该具备的职业素质总结出一下几点:,1.沟通能力。测试人员必须能够同测试涉及到的所有人进行沟通,具有与技术人员和非技术人员交流的能力。,2.共同价值观。测试人员必须和每一类人打交道与他们形成共同的价值观,具备这种能力可以将测试人员与相关人员之间的冲突和对抗减少到最低程度。,测试人员素质 Cont.,3.,技术能力。开发人员轻视那些不懂技术的人是一种普遍存在的现象,测试人员必须很好的理解被测软件概念,会使用其中的一些重要工具。,4.,自信。测试人员和开发人员的工作性质相反,所以经常出现开发人员指责测试人员工作出现错误的事情。测试人员必须对自己的观点保持足够的自信,如果容许别人对自己的工作结果指东指西,就不能完成更多的事情了。,测试人员素质 Cont.,5.,交流。当你告诉某个开发人员的程序出现了错误时,需要用一种婉转且留有余地的商讨口吻和开发人员交流。,6.,记忆。测试人员应该具备将历史类似错误从记忆深处挖掘出来的本领。,7.,耐心。测试工作需要耐心,有时我们需要花费大量的时间去剥离、确认和跟踪一个错误,测试工作是那些坐不住板凳的人无法胜任的。,测试人员素质 Cont.,8.疑心。这也是测试人员必须具备的根底品德,开发人员本能地掩盖所有已经出现的或者未出现的错误。测试人员在听取了开发人员的说明后,必须保持疑心态度知道经过自己认真地核实。,End Thanks,
展开阅读全文