目录培训目的一软件测试介绍二测试项目启动三软件测试概述四参考书籍五一、培训目的•了解测试岗位。•了解测试在软件项目中的位置。•搭架测试技术的整体框架。•了解一些常见的测试名词。二、软件测试介绍1什么是软件测试2测试人员的工作内容3测试的8个原则4测试人员应该具备的素质5软件测试职业发展二、软件测试介绍•1、什么是软件测试•官方定义:使用人工或自动手段来运行或测定某个系统的过程,检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。——IEEE1983年•工作中的软件测试:在整个项目中,通过评审需求、执行程序,发现程序与需求之间的差别;验证程序的某些功能特性;收集提供测试数据;辅助研发验证程序等一系列操作。二、软件测试介绍•2、测试人员的工作内容•评审需求,提出需求不合理的地方。•审批文档,提出不符合业务逻辑的地方。•测试程序,提出不符合需求的地方。•验证程序,给出程序实际的功能需求。•执行程序,提供其它部门需要的数据。•辅助测试,帮助开发定位问题。二、软件测试介绍•3、测试的8个原则•完全测试程序是不可能的。•软件测试是有风险的行为。•测试无法显示潜伏的软件缺陷。•找到的软件缺陷越多,就说明软件缺陷越多。•并非所有软件缺陷都要修复。•产品说明书从没有最终版本。•软件测试员在产品小组中不受欢迎。•软件测试是一项讲究条理的技术专业。二、软件测试介绍•4、测试人员应该具备的素质软件测试是一项严谨的工作。一名优秀的软件测试工程师应具备以下16种素质(态度决定一切):沟通能力技术能力兴趣和自信心说服力幽默感耐心怀疑精神自我督促探索精神故障排除能手不懈努力创造性追求完美判断准确老练稳重心情愉快二、软件测试介绍•5、软件测试职业发展IT类初中级职位:配置管理员、系统分析员、产品运营维护、质量审核员高级/资深测试工程师:性能测试工程师、测试设计专家、自动化测试专家、测试工具开发专家。二、软件测试介绍•5、软件测试职业发展软件测试职业1.普通测试工程师1.普通测试工程师2.性能测试工程师3.测试设计专家4.自动化测试专家5.测试工具开发专家6.测试管理者主要职责:•基于需求文档,从用户体验的角度来编写测试用例。•基于测试用例,进行测试执行工作。•基于测试用例,进行自动化测试脚本开发。•对测试执行中发现的bug,进行认真分析和详细、准确描述。•进行手工回归测试的执行和自动化测试的执行。•对市场提供技术支持。基本要求:•足够丰富的业务知识。•良好的测试规范习惯。•熟悉测试流程。•掌握常见的测试工具。•较强的bug分析和定位能力。•能独立编写测试用例。•思维严谨和发散。有一定的沟通表达能力。团队协作精神。•很强的学习能力和适应能力。具备相关计算机技术或业务相关知识。二、软件测试介绍•5、软件测试职业发展软件测试职业2.性能测试工程师1.普通测试工程师2.性能测试工程师3.测试设计专家4.自动化测试专家5.测试工具开发专家6.测试管理者主要职责:•进行性能测试方案的设计和执行。•进行压力测试方案的设计和执行。•性能测试数据的准备。•对性能测试和压力测试发现的bug能进行准确的分析和定位。•性能测试环境的搭建。•能提出辅助性能测试工具的开发需求。•性能测试工具的选型。•对产品性能模块提供设计建议。•确保产品性能参数达到或超过行业标准。•编写详细、准确的性能测试报告。基本要求:•掌握被测产品的性能参数指标和常见性能测试方法。•能设计和搭建高效性能测试环境。•掌握相关性能测试工具的使用。•良好的团队沟通、协作能力。•至少有1-2年功能测试经验。•丰富的行业业务经验。•了解常见用户应用模型。二、软件测试介绍•5、软件测试职业发展软件测试职业3.测试设计专家1.普通测试工程师2.性能测试工程师3.测试设计专家4.自动化测试专家5.测试工具开发专家6.测试管理者主要职责:•前期测试需求收集和分析。•测试方案设计,包括自动化测试方案设计等工作。•解决测试中的测试难题,提供测试领域中的解决方案。•基于项目计划和项目目标制定测试策略和测试计划。•利用自己丰富的测试经验指导和帮助测试工程师开发测试用例。•参与各种测试策略和测试设计的评审。•参与各种测试用例的评审。•进行性能测试的设计和分析。•去用户现场了解用的产品使用模式。•按产品实际使用模式来指导测试策略的设计。•参与系统测试和解决方案测试的设计和执行工作。•参与产品规划和产品架构设计的评审会。•测试工具选取的评审。•测试工程师的培养。二、软件测试介绍•5、软件测试职业发展软件测试职业3.测试设计专家1.普通测试工程师2.性能测试工程师3.测试设计专家4.自动化测试专家5.测试工具开发专家6.测试管理者基本要求:•丰富的功能测试实战经验。•丰富的性能测试经验。•丰富的测试业务相关行业经验。•丰富的测试设计经验。•有针对整个产品全局测试的设计经验,而不仅仅是只有几个模块的测试经验。•深厚的性能测试计划、设计、分析能力。•交强的沟通、协调和表达能力。•具备能与用户进行技术沟通和交流的能力。二、软件测试介绍•5、软件测试职业发展软件测试职业4.自动化测试专家1.普通测试工程师2.性能测试工程师3.测试设计专家4.自动化测试专家5.测试工具开发专家6.测试管理者主要职责:•建立自动化测试框架。•负责设计自动化脚本框架。•优化自动化测试流程。•自动化工具及测试相关新技术研究。基本要求:•对C/Java/C++/.NET任一种变成语言,有2年以上编程经验。•精通各类测试脚本开发语言,如Tel、Perl、Python、VBScript等。•有开发自动化测试工具,以及搭建自动化测试平台的实战经验。•建立过专业化的软件自动化测试工具平台,支撑产品线测试工作并提高软件测试效率。•组建过专业化的软件自动化测试团队。•非常强的技术背景,精通软件测试理论,方法和过程,并能够不断的学习、总结和提高。二、软件测试介绍•5、软件测试职业发展软件测试职业5.测试工具开发专家1.普通测试工程师2.性能测试工程师3.测试设计专家4.自动化测试专家5.测试工具开发专家6.测试管理者主要职责:•根据测试工作开发需求,带领团队或独立开发出适用、稳定的测试工具。•为测试工具的使用提供相应的技术支持。•与测试团队一起很好地规划测试工具的开发计划。•密切关注最新的开源测试工具。•进行商用测试工具的选择决策。基本要求:•有实战手工测试经验尤佳。•熟悉所测试行业的业务知识。•熟悉相关行业的测试工具情况,包括开源和商用。•遵守开发流程,依据产品线特点进行测试工具的需求分析、设计、编码和测试,以及维护、改进工作,并在测试部门应用和推广。•理解软件测试工作的本质。•数年丰富的C++、Java或者.NET开发经验。•自动化测试脚本开发经验。•具备软件系统设计及架构经验。二、软件测试介绍•5、软件测试职业发展软件测试职业6.测试管理者1.普通测试工程师2.性能测试工程师3.测试设计专家4.自动化测试专家5.测试工具开发专家6.测试管理者主要职责:•参与测试项目的需求分析和评审,关注项目需求的可测试性并设定测试计划或方案。•参与或指导测试工程师编写测试用例,开发测试脚本及执行测试。•负责完成测试环境搭建和测试执行工作。•按照软件工程规范和项目管理流程,实施、管理和执行软件不同阶段的各种测试并提交测试报告。•指导下属编写测试文档,收集并分析测试中发现的问题,根据测试分析结果向研发部门提供产品技术性能改进方面的建议、并追踪落实。•响应相关部门的技术支持需求,组织相关人员协调解决相应问题。•测试团队成员工作分配,绩效考评,部门培训。•与其他开发项目组进行沟通,协调确保测试项目按时保质完成。基本要求:•有丰富的被测目标的相关测试经验。•熟悉测试流程的制定和用例编写方法,能够指导测试工程师开展测试工作。•对测试技术有深入的理解,掌握2种以上常用的测试工具。•具有高效协调工作和组织管理能力、较强的分析和判断能力、沟通能力。二、软件测试介绍•5、软件测试职业发展软件测试职业6.测试管理者1.普通测试工程师2.性能测试工程师3.测试设计专家4.自动化测试专家5.测试工具开发专家6.测试管理者主要职责:•参与测试项目的需求分析和评审,关注项目需求的可测试性并设定测试计划或方案。•参与或指导测试工程师编写测试用例,开发测试脚本及执行测试。•负责完成测试环境搭建和测试执行工作。•按照软件工程规范和项目管理流程,实施、管理和执行软件不同阶段的各种测试并提交测试报告。•指导下属编写测试文档,收集并分析测试中发现的问题,根据测试分析结果向研发部门提供产品技术性能改进方面的建议、并追踪落实。•响应相关部门的技术支持需求,组织相关人员协调解决相应问题。•测试团队成员工作分配,绩效考评,部门培训。•与其他开发项目组进行沟通,协调确保测试项目按时保质完成。基本要求:•有丰富的被测目标的相关测试经验。•熟悉测试流程的制定和用例编写方法,能够指导测试工程师开展测试工作。•对测试技术有深入的理解,掌握2种以上常用的测试工具。•具有高效协调工作和组织管理能力、较强的分析和判断能力、沟通能力。二、软件测试介绍•5、软件测试职业发展•附:软件测试学习路线图对于软件测试初学者,我们要切合实际、循序渐进的学习,在学习中可参考以下所示的软件测试学习路线图,从软件测试的理论基础,到项目实战,逐步学习,掌握技术技能,最终胜任软件测试工作。三、测试项目启动1软件工程2软件测试过程模型3软件测试流程4测试项目启动三、测试项目启动•1、软件工程•软件工程定义:软件工程是指应用计算机科学、数学及管理学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生产率、提高软件质量、降低软件成本。•软件生存周期:一个软件产品或软件系统要经历孕育、诞生、生长、成熟、衰亡的许多阶段,一般称为软件生存周期,又叫软件开发工程。把上述过程的基本活动进一步展开,可以得到软件生存周期的6个阶段,即可行性分析和项目开发计划、需求分析、软件设计、编码、测试和维护活动。四、软件测试概述•2、软件测试过程模型软件测试过程模型,主要用来描述测试过程和开发过程的关系。测试过程和开发过程都贯穿于软件过程的整个生命周期,它们是相辅相成、相互依赖的关系。概括起来有3个关键点:1、测试过程和开发过程是同时开始,同时结束的,两者保持同步的关系。2、测试过程是对开发过程中阶段性成果和最终的产品进行验证的过程,所以两者相互依赖。3、测试工作的重点和开发工作的重点可能是不一样的,两者有各自的特点。常用的模型有:V模型、W模型、H模型、X模型,前置测试模型。四、软件测试概述•2、软件测试过程模型•V模型V模型反映出了测试活动与分析设计活动的关系。V模型指出:单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求。V模型存在一定的局限性,它仅仅把测试作为在编码之后的一个阶段,是针对程序进行的寻找错误的活动,而忽视了测试活动对需求分析、系统设计等活动的验证和确认的功能。图例:V模型四、软件测试概述•2、软件测试过程模型•W模型W模型伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。图例:W模型三、测试项目启动•3、软件测试流程•软件测试流程:从软件项目启动开始,围绕软件项目所做的测试准备、测试计划、测试用例、测试执行、测试回归、测试报告等叫做软件测试流程。•Task生命周期:•Bug生命周期:三、测试项目启动•3、软件测试流程•Bug生命周期详解流程:三、测试项目启动•4、测试项目启动•什么是测试项目:围绕着软件本身所做的一系列测试工作,并进行立项管理的项目