目录:第一章、软件工程学第二章、软件测试基础第三章、基于生命周期软件测试第四章、软件测试分类与分级第五章、软件缺陷管理(*)常见缺陷状态说明(*)第六章、软件测试过程及管理(*)测试计划(*)第七章、软件静态测试第八章、动态测试第一章、软件工程学1.软件的定义:软件由数据:该程序能够具体满意地处理信息的数据结构程序:当运行时,能够提供所要求功能和性能的指令或计算机程序集合;文档:描述程序功能需求以及程序如何操作和使用文档。
2.软件危机的产生:软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
3.软件危机的原因1)需求不明确2)缺乏正确的理论指导3)软件开发规模越来越大4)软件开发复杂度越来越高4.消除软件危机的办法对计算机软件有一个正确的认识(软件≠程序)充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目推广使用在实践中总结出来的开发软件成功技术和方法开发和使用更好的软件工具5.软件工程方法项目计划与估算需求分析数据结构总体设计编码、测试与维护等工具软件工具软件支撑环境计算机辅助软件工程(CASE)等过程方法使用的顺序需交付的文档变更管理里程碑管理等软件生命周期(*)SRS:计划,分析,设计,编码,测试,运行和维护。
软件生命周期模型(*)瀑布模型:V模型强调软件开发的协作和速度,将软件实现和验证有机地结合起来,在保证较高的软件质量情况下缩短开发周期。
迭代模型:4.1敏捷开发的定义是一种以用户的需求进化为核心、迭代、循序渐进的开发方法。
敏捷开发的特点:变强调软件开发对未来可能出现的变化和不确定性做出全面反应早总体目标是尽可能早地、持续地对有价值软件的交付快主要是用于需求模糊或快速变化的前提下,小型开发团队的软件开发活动软件开发主流技术主机终端模式文件服务器模式C/S模式客户/服务器模式胖客户/瘦服务器QQ、微信、王者荣耀B/S模式浏览器/服务器模式瘦客户/胖服务器Web QQ、洛克王国第二章、软件测试基础(一共有三个)现代定义:是对软件需求分析、设计、编码的最终复查的一系列过程,是软件质量保证的关键步骤目的:1.发现缺陷,提高质量2.验证是否满足需求3.建立软件质量的信心3.测试的7个原则:1.测试显示缺陷存在2.穷尽测试是不可能的3.测试尽早介入4.缺陷集群性5.杀虫剂悖论6.测试活动依赖于测试背景7.没有失效不代表系统是可用的缺陷的原因1.人本身容易犯错误2.时间的压力3.复杂的外部系统4.技术的革新5.复杂的代码6.复杂的系统架构软件测试工作是验证软件系统是否满足软件用户的需求测试流程工具商业化的测试工具:●测试管理工具: HP ALM/QC●自动化测试工具: HP UFT(QTP & Service Test)●性能测试工具: HP Loadrunner●安全测试工具: HP Fortify、WebInspect开源测试工具:●Testlink、禅道、Mantis、BugZilla、selenium、Jemeter、JUnit、CppUnit认识误区1.软件开发完成后进行软件测试2.软件发布后如果发现质量问题,那是软件测试人员的错3.软件测试是软件开发的对头4.软件测试是没有前途的工作,只有程序员才是软件高手5.期望用测试自动化代替大部分人工劳动6.认为软件测试文档不重要第三章、基于生命周期软件测试生命周期测试方法意味着测试与软件开发平行生命周期测试应伴随整个软件开发周期,此时测试的对象不仅仅是程序,需求、功能和设计同样要测试软件开发的所有阶段进行测试,被设计用来减少测试成本测试与开发同步进行,有利于尽早地发现问题,同时缩短项目的开发建设周期2、软件生命周期的六个阶段:①需求:(需求阶段测试很重要)验证和确认需求说明书、制定测试计划测试需求、组织团队、测试计划②设计:(包括概要设计和详细设计)验证和确认设计文档、模型等,测试设计及评审测试方案、测试案例等③编程:代码、评审、搭建环境、单元测试测试案例及缺陷等④测试:执行测试、缺陷管理缺陷报告和测试报告⑤安装:安装测试、确认产品安装程序、安装文档、用户手册等⑥维护:培训、维护、变更管理、测试维护手册、测试报告等第四章、软件测试分类与分级软件测试分类:一般分类是否关心内部结构白盒测试、黑盒测试、灰盒测试开发过程级别单元测试、集成测试、系统测试、验收测试是否执行程序静态测试、动态测试执行过程是否需要人工干预手工测试、自动化测试测试实施组织开发测试、用户测试、第三方测试软件配置缩写为CSCI分类计算机软件配置项:定义是为独立的配置管理而设计的且能满足最终用户要求的一组软件,简称软件配置项软件开发过程中,代码、文档、报告等工作成果软件配置管理控制软件配置项的投放和变更,并且记录并报告配置的状态和变更要求,验证配置的完整性、正确性和一致性基线即:软件技术状态基线任何软件配置项,一旦形成文档并审议通过,即成为基线每个基线都是下一步开发的出发点和参考点里程碑人为的,时间的虚点。
质量特性分类:功能性、可靠性、可用性、效率、维护性、可移植性重点非功能测试:负载测试性能测试容量测试压力测试稳定性测试兼容性测试文档测试软件测试的分级:第五章、软件缺陷管理(*)常见缺陷状态说明(*)软件缺陷定义计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。
错误:不符合文档编制与编码规定测试过程不足规程错误文档编制错误需求的不完善定义编码错误逻辑设计错误客户——开发者通信失败对软件需求的故意偏离缺陷基本信息:标识(Identifier) 报告人报告日期程序的名称版本号缺陷类型(Type) 严重性(Severity) 优先级(Priority) 关键词缺陷描述重现步骤结果对比附件1、按软件生命周期分类有用户需求错误、产品需求错误、设计错误、编码错误、数据错误、发行错误2、按软件使用分类有功能错误、性能错误、界面错误、流程错误、数据错误、提示错误、常识错误以及其他错误3、按GB/T 15532-2008分类有程序问题、文档问题、设计问题及其它问题优先级High缺陷应该立即被解决(不符合系统的设计或某一主要功能无法实现)Middle缺陷需要正常排队等待修复或列入软件发布清单(某些非总要的功能未能实现,但不影响其他功能)Low缺陷可以在方便的时候被纠正(不影响系统的功能实现,如提示信息错误,错别字等)严重程度Urgent Very High High Medium Low缺陷报告的主要内容缺陷的标题与简单描述缺陷的基本信息复现缺陷的操作步骤缺陷的实际结果描述、期望的正确结果描述注释文字和截取的缺陷图像缺陷报告的撰写标准准确清晰简洁一致完整软件测试过程度量测试覆盖率设计测试用例的需求数/需求总数测试执行率已执行的测试用例数/设计的测试用例总数测试执行通过率执行结果为通过的测试用例数/实际执行的测试用例数缺陷解决率已关闭的缺陷数/缺陷总数缺陷管理的意义1. 通过推广专业的技术找到隐藏的缺陷2. 通过准确的文档报告缺陷3. 通过良好的沟通使缺陷尽快解决4. 通过良好的措施减少和预防缺陷的发生5. 通过合适的工具管理缺陷报告6. 通过优化的流程推进缺陷的生命周期7. 通过缺陷数据的分析及时找到问题和根源8. 通过角色的分工促进团队协作9. 通过明确的分级确保优先的处理10.通过缺陷三方会审一起做出正确决策。
软件缺陷的度量分析统计。
缺陷管理工具mantis(免费)收费:Rational Clear Quest,URTracker,TestDirector免费:Bugfree,Bugzilla第六章、软件测试过程及管理(*)测试计划(*)软件测试过程模型开发模型瀑布、增量、迭代、原型、敏捷、螺旋测试模型V定义:不同测试阶段和开发过程期间各阶段的对应关系W特点:增加软件各开发阶段中应同步进行的验证和确认活动V和W的局限性串行活动,无法更好适应变更线性的前后关系,无法有效支持迭代测试完整性不足H的特点测试是一个独立的流程贯穿整个生命周期尽早准备尽早执行测试分层次进行,不同层次的测试按照某个次序先后进行,也可以重复进行测试过程中活动需求分析制定测试计划设计用例执行测试用例追踪缺陷测试报告评估度量指标测试覆盖率已设计测试用例的需求数/需求总数测试执行率已执行的测试用例数/设计的测试用例总数测试执行通过率执行结果为通过的测试用例数/实际执行的测试用例数测试缺陷解决率已关闭的缺陷数/缺陷总数TMM为测试成熟度模型TMM的五个级别:初始级,定义级,集成级,管理和测量级,优化、预防缺陷和质量控制级软件成熟度模型(CMM) CMM的五个级别:•初始级、可重复级、定义级、管理级、优化级1)测试计划软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。
2)测试计划的编写内容测试环境测试基本原理和策略测试计划阶段划分测试计划要点功能描述和功能覆盖说明测试用例清单测试开始和退出准则3)3)软件测试需求收集途径与被测软件相关的各种文档资料与客户或系统分析员的沟通业务背景资料正式与非正式的培训其他4)4)软件测试需求的评审内容完整性审查准确性审查方式相互评审、交叉评审轮查走查小组评审审查评审人员组成开发经理项目经理测试经理系统分析人员相关开发人员测试人员等5)测试设计与开发的主要内容- 制定测试技术方案、设计测试用例- 选择测试工具- 开发脚本- 测试环境的设计6)测试执行分类,测试用例执行的跟踪,BUG的跟踪和管理7)描述要执行的软件测试及测试的结果•常见软件测试文档:测试方案、测试计划、测试需求、测试用例、缺陷报告、测试报告等第七章、软件静态测试1、概念通常是指不执行程序代码而寻找代码中可能存在的错误或评估程序代码的过程。
2、对象各种与软件相关的有必要进行测试的产物,比如各类文档、源代码等。
3、引入的目的1、软件产品内部结构复杂、混乱,代码的编写也没有规范,使得软件内部存在一些不易被察觉的错误。
2、软件产品需要升级维护时,由于程序的复杂度和代码编写的混乱,维护工作很难进行。
3、静态测试所要做的就是对代码标准以及质量进行监控,以此来提高代码的可靠性,使系统的设计符合模块化、结构化、面向对象的要求。
4、特点1、不必动态地运行程序。
2、可以人工进行,充分发挥人的思维优势。
3、不需要特别的条件,容易展开。
4、对测试人员要求比较高。
5、主要内容1、各阶段的评审一般评审包括:培训评审、同行评审,我们所关心的是同行评审1、概念同行评审是由开发软件产品作者以外的其他人检查工作产品,以发现缺陷并寻找改进的机会2、同行评审的方法评审方法是评审参与者通常采用一行一行仔细阅读被评审对象的形式发现被测对象中的缺陷1、临时评审(最不正式)作者找团队同事帮忙,不一定是一对一,可以找很多人帮忙2、同级桌查一对一,没有标准的流程,过程由作者主持3、走查一对多,没有标准的流程,过程由作者主持4、小组审查轻量级的比较正式的审查,没有相应的评审标准5、审查(最正式)有会前准备和严格的评审标准,发现问题最多,代价最高3、评审的时间点一般设在工作产品到达了一个完成的里程碑并即将进入下一个开发阶段时2、代码检查主要检查代码和设计的一致性、代码对标准的遵循、代码的可读性、代码的逻辑表达正确性,代码的合理性3、软件复杂性分析主要包括软件复杂性度量与控制,面向对象的软件复杂性度量4、软件质量度量就是从整体上对软件质量进行评测,用于软件开发中对软件进行质量控制,并最终对软件产品进行评价和验收第八章、动态测试白盒测试“白盒”测试又称为结构测试或逻辑驱动测试是一种按照程序内部逻辑结构和编码结构设计测试数据并完成测试的一种测试方法。