《软件质量保证和测试》软件测试概述肖睿rui.xiao@jb-aptech.com.cn软件测试概述内容•软件测试•定义、目的和作用•衡量标准•发展方向•原则和经验•软件测试要素•测试技术•测试过程•测试人员软件测试概述软件测试概况定义:为了发现程序的错误而执行程序的过程软件测试是SQA的重要手段,属于软件工程领域目前状况软件测试的实践性大于理论性软件测试理论体系尚不成熟软件测试工具尚不成熟软件测试效果对于个人的依赖性比较大软件测试概述软件测试目的为了寻找错误,并尽可能地为修正错误提供更多的信息为了证明软件有错误,而不证明软件没有错误作用发现并管理缺陷度量质量评价工作效率和效果预期项目风险软件测试概述内容•软件测试•定义、目的和作用•衡量标准•发展方向•原则和经验•软件测试要素•测试技术•测试过程•测试人员软件测试概述软件测试衡量标准多能够找到尽可能多的、以至于所有的BUG快能够尽可能早地发现最严重的BUG好找到的BUG是关键的、用户最关心的找到BUG后能够重现找到的BUG,并为修正BUG提供尽可能多的信息省能够用最少的时间、人力和资源发现BUG测试的过程和数据可以重用软件测试概述内容•软件测试•定义、目的和作用•衡量标准•发展方向•原则和经验•软件测试要素•测试技术•测试过程•测试人员软件测试概述软件测试发展方向验证技术形式化数学方法,用于关键应用小程序静态测试WALKTHROUGH/INSPECTION/REVIEW走查/审查/评审动态测试选择测试策略设计测试方式和测试用例执行测试并评估和跟踪测试结果自动测试测试管理和测试执行中都有可以自动测试的地方选择需要自动测试的地方注重ROI软件测试概述内容•软件测试•定义、目的和作用•衡量标准•发展方向•原则和经验•软件测试要素•测试技术•测试过程•测试人员软件测试概述软件测试原则1、测试应该基于用户需求。2、测试设计是关键测试时间和资源是有限的测试到所有情况是不可能的。避免冗余的测试。3、应该尽早开始测试尽早制定测试计划。测试从模块级开始。软件测试概述软件测试经验1、心理素质最重要开发人员我不会犯错---任何人都可能犯错这种错误不能算作错误---质量是由用户来评价的发现我的错误是对我工作的否定---是对我的工作的帮助测试人员责任心不够,反正测试是不可能发现所有错误的---职业教育+激励措施没有创造性、枯燥---总结经验,培养敏锐度,提升个人价值和权威技术比开发人员差,自信心不足---代表用户,决定成功的是用户满意软件测试概述软件测试经验2、测试前必须明确预期的输出结果否则实际的输出结果很可能成为检验的标准,测试失去意义3、必须检查每一个实际输出结果很可笑,但是却是事实:不认真检查输出结果软件测试概述软件测试经验4、一段程序中存在错误的概率与这段程序中已经发现的错误数成正比编码规范、需求理解、技术能力、内部耦合性都会导致这种“虫子窝“现象5、可能的情况下,避免测试自己的软件发现不了思路错误发现不了环境错误心理因素导致测试可能不够彻底和全面软件测试概述软件测试经验6、依照用户的要求、配置环境和使用习惯进行测试并评价结果7、测试设计决定了测试的有效性和效率,测试工具只能提高测试效率8、注意保留测试设计,并注意测试设计的可重用性和说明文档软件测试概述软件测试经验9、测试活动要有组织、有计划、有选择穷举测试是不可能的不充分的测试是不负责任,过度的测试是浪费资源计划的活动提高效率10、不要放弃随机测试的方法测试的不成熟性和艺术性软件测试概述内容•软件测试•定义、目的和作用•衡量标准•发展方向•原则和经验•软件测试要素•测试技术•测试过程•测试人员软件测试概述测试技术软件测试技术静态测试代码走查动态测试技术评审代码审查黑盒测试白盒测试功能测试性能测试攻击测试回归测试语句覆盖分支覆盖路径覆盖不实际运行程序,而是通过检查和阅读等手段来发现错误并评估代码质量的软件测试技术。也称为静态分析技术。实际运行程序,并通过观察程序运行的实际结果来发现错误的软件测试技术。在不知道程序内部结构,只知道程序规格的情况下采用的测试技术或策略。在知道程序内部结构的情况下采用的测试技术或策略。开发组内部进行的,采用讲解、讨论和模拟运行的方式进行的查找错误的活动。开发组内部进行的,采用讲解、提问并使用Checklist方式进行的查找错误的活动。一般有正式的计划、流程和结果报告。开发组、测试组和相关人员(QA、产品经理等)联合进行的,采用讲解、提问并使用Checklist方式进行的查找错误的活动。一般有正式的计划、流程和结果报告。针对要求的程序功能,按照规范的流程进行的测试。针对要求的程序功能以外的其他要求,包括性能、安全、配置、负载等指标,按照规范的流程进行的测试。针对要求的程序功能、性能、安全、配置、负载等指标,基于破坏目的、按照经验进行的随机测试。程序修改或者版本更新以后,为了确保以前正确的功能和其他指标仍旧正确,而重新进行的测试。在测试过程中,选择足够的测试用例,使得每一个可执行语句至少被执行一次。在测试过程中,选择足够的测试用例,使得程序中的每一个分支判断的每一种可能结果都至少被执行一次。在测试过程中,选择足够的测试用例,使得程序中的每一条可能执行的路径都至少执行一次。软件测试概述内容•软件测试•定义、目的和作用•衡量标准•发展方向•原则和经验•软件测试要素•测试技术•测试过程•测试人员软件测试概述测试过程规格定义设计编码系统测试集成测试单元测试用户需求验收测试回归测试配置管理缺陷跟踪软件测试概述测试过程单元测试:UnitTesting目标:检验程序最小单元有无错误接口、数据结构、边界、覆盖、逻辑检验单元编码与设计是否吻合时机:编码完成后,首先要实施的测试方法:静态测试白盒测试责任:开发工程师软件测试概述测试过程集成测试:IntegrationTesting目标:检验组成系统的模块接口有无错误代码实现的系统设计与需求定义是否吻合时机:主要的单元测试完成后,经常与单元测试同步进行方法:黑盒测试责任:开发工程师测试工程师软件测试概述测试过程系统测试:SystemTesting目标:检验组成整个系统的代码、以及系统的软硬件配合有无错误代码实现的系统与用户需求是否吻合检验系统的文档等各种是否完整、有效模拟验收测试的要求,检查系统是否符合用户的验收标准时机:多数集成测试完成后方法:黑盒测试责任:测试工程师软件测试概述测试过程系统测试:SystemTesting稳定期测试目标:度量是否可以结束测试时机:传统的系统测试完成后方法:黑盒测试责任:测试工程师软件测试概述测试过程验收测试:AcceptanceTesting目标:使客户验收签字系统是否符合事先约定的验收标准时机:系统测试完成后,在项目组看来开发和测试工作已经全部完成,可以交付使用方法:黑盒测试责任:产品经理或其他高级经理开发工程师测试工程师用户软件测试概述测试过程回归测试:RegressionTesting目标:验证程序修改或者版本更新以后,以前正确的功能和其他指标仍旧正确。时机:每次错误修改之后,或者版本更新之后方法:白盒测试/黑盒测试责任:开发工程师测试工程师软件测试概述测试过程缺陷跟踪:DefectTracing目标:确保所有发现的错误被正确记录、分发、评估、关闭、统计时机:从错误发现开始到错误关闭为止,每次错误状态修改之后方法:缺陷跟踪系统责任:开发工程师测试工程师测试经理用户软件测试概述测试过程测试粒度白盒测试黑盒测试单元系统验收集成软件测试概述测试过程规格定义设计编码系统测试集成测试单元测试用户需求验收测试回归测试配置管理缺陷跟踪软件测试概述内容•软件测试•定义、目的和作用•衡量标准•发展方向•原则和经验•软件测试要素•测试技术•测试过程•测试人员软件测试概述测试人员职业素质要求—包括开发人员和测试人员1、责任心包括坚持原则2、怀疑精神和学习能力包括好奇3、沟通能力用户、项目组4、专注力至少需要耐心和记忆力5、洞察力来源于经验、逻辑思维能力和敏感度:6、团队精神软件测试概述内容•软件测试•定义、目的和作用•衡量标准•发展方向•原则和经验•软件测试要素•测试技术•测试过程•测试人员