章节重点:
1、什么是软件?文档+数据+程序
文档:包括软件需求说明书、软件概要设计说明书、软件详细说明书、用户操作手册
数据:表现形式多种多样
程序:代码,算法+数据结构,算法
2、软件测试的划分?
(1)按照开发阶段划分
• 单元测试:单元测试又称为模块测试,是针对软件设计的最小单位一程序模块进行正确性检验的测试工作。
• 集成测试:将多个单元模块组合在一起实现多个功能保证模块与模块之间能互相访问,一次性集成方式、增殖式集成方式、混合增殖式测试。
• 系统测试:与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合。
• 确认测试:验证软件的功能和性能及其他特性是否与用户的要求一致。
• 验收测试:以用户为主的测试
(2)按照测试实施组织划分
• 开发方测试:开发方通过检测和提供客观证据,证实软件的实现是否满足规定的需求
• 用户测试:主要是把软件产品有计划的免费发到目标市场,让用户大量使用,并评价、检查软件。
• 第三方测试:介于软件开发方和用户方之间的测试组织的测试。第三方测试也成为独立测试。
(3)按照测试技术划分
• 白盒测试:
– 把测试对象看成是一个打开的盒子,程序内部的逻辑结构盒其他信息对测试人员都是公开的。白盒测试的方法有逻辑覆盖(语句覆盖、判定覆盖、条件组合覆盖、路径覆盖)基本路径测试等。
• 黑盒测试:
– 把测试对象看成是一个黑盒子,不考虑程序内部的逻辑结构盒内部特征,主要在软件的接口处进行测试,主要测试软件的功能。黑盒测试的方法包括等价类、边界值、错误推测法、因果图、功能图等
• 针对测试(特殊)
– 一种基于行业用户在使用产品过程中最容易遇到的错误而进行的一种有针对性的测试方法。多组测试条件汇集成一个测试库,测试人员依据测试库快速查找产品中的错误。由于剔除了测试阶段的盲目性,针对测试在实际运用中大大缩短了测试周期,降低了测试运行成本。针对测试对使用者有较高的要求,需要测试者有很长的测试积累周期并限定运用对象。
• 单元测试:单元测试又称为模块测试,是针对软件设计的最小单位一程序模块进行正确性检验的测试工作。
• 集成测试:将多个单元模块组合在一起实现多个功能保证模块与模块之间能互相访问,一次性集成方式、增殖式集成方式、混合增殖式测试。
• 系统测试:与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合
• 冒烟测试:
– 一个初始的快速的测试工作,以决定软件或者新发布的版本测试是否可以执行下一步的“正规”测试。如果软件或者新发布的版本每5分钟与系统冲突,使系统陷于泥潭,说明该软件不够健全,目前不具备进一步测试的条件
• 回归测试
– 软件或环境的修复或更正后的“再测试”,自动测试工具对这类尤其有用
• 性能测试:
– 测试软件的运行性能。这种测试常与压力测试结合进行,如传输链接的最长时限、传输的错误率、计算的精度、记录的精度、响应的时限和恢复时限等。
• 负载测试:
– 测试软件在重负荷下的运行表现,系统的响应时间减慢或崩溃。
• 压力测试:
– 测试系统在某一条件达到最高限度时各项功能是否依旧运行。
• 可用性测试
– 测试用户是否能够满意使用。具体体现为操作是否方便、用户界面是否友好等。
• 安装/卸载测试
– 对软件的全部、部分、升级安装或卸载处理过程的测试
• 接受测试(可用测试、用户测试)
– 基于客户或最终用户的需求的最终测试,或基于用户一段时间的使用后,看软件是否满足客户要求。
• 恢复测试:
– 采用人工的干扰使软件出错,中断使用,检测系统的恢复能力。
• 安全测试是
– 验证安装在系统内的保护机制确实能够对系统进行保护,使之不受各种干扰。
• 兼容测试
– 测试软件在多个硬件、软件、操作系统、网络等环境下是否能正常运行。
• Alpha测试
– 在公司内部系统开发接近完成时对软件的测试,测试仍会有少量的设计变更。A测试时,开发者坐在用户旁边,随时记录用户发现的问题
• Beta测试
– 当开发和测试根本完成所做的测试,而最终的错误和问题需要在最终发行前找到。B测试时开发者不在测试现场,是在开发者无法控制的环境下进行的测试,通常是由软件开发者向用户散发B版本软件,然后收集用户的意见。
3、软件测试的模型:V/W/H/X/前置模型等,其中重点掌握
优点:V模型反映了开发与测试的关系,明确的标出各个测试阶段及对应关系
缺陷:不适合的原因是软件测试在软件开发后才执行,延误了项目周期。
特点:
l 测试人员尽早的了解业务,测试需求在需求阶段就介入,测试和开发并行工作,更早介入、更早发现、更早纠正。
l 每个阶段测试都有文档产生!
l 验收测试检验软件实施的阶段,同时检验了软件需求分析,双重检验。
l W模型比较适用于新项目的测试!
4、软件测试的生命周期
|
软件都要经历需求分析、设计、编码、测试、使用、淘汰的过程。 当软件不再被使用之后就标志生命周期结束。 |
5、软件测试项目周期:
(1)需求阶段
• 培训开发团队和客户,加强开发团队和客户对测试过程和测试标准的了解,影响其对测试的观点和态度
• 确定测试项目的高阶范围
• 确定测试项目的大致计划和安排
(2)测试设计阶段
• 制定测试标准
• 制定测试需求
• 制定测试计划
• 系统培训
(3)测试设计阶段
• 根据制定的测试需求、相关文档以及被测系统等设计测试用例
• 开发测试脚本、测试程序
• 设计测试数据
(4)测试执行阶段
• 按执行计划执行测试用例
• 记录测试过程
• 缺陷跟踪
(5)总结阶段
6、软件质量管理的八大原则:
• 原则1以客户为关注焦点
• 原则2领导作用
• 原则3全员参与
• 原则4过程方法
• 原则5管理的系统方法
• 原则6持续改进
• 原则7基于事实的决策
• 原则8互利的供应商关系
7、影响软件质量的因素
• 人的因素
• 软件需求不明确
• 质量总是可能出现在开始过程的各个环节上
• 测试的局限性
• 质量管理的困难
• 质量管理未能给予足够的重视
• 软件人员的传统习惯
• 开发规范
• 开发工具的支持不够
8、CMM/ISO9000
软件能力成熟度模型(Capability Maturity Model,CMM)
5个级别:初始级、可重复级、已定义级、已管理级、优化级
9、十大软件质量要素:
功能性质量因素:正确性,健壮性,可靠性
非功能性质量因素:性能,易用性,清晰性,安全性,可扩展性,兼容性,可移植性
练习:
1、 什么是软件测试?
答:软件测试:软件测试是为了发现错误而执行程序的过程
2、 软件测试的目的?
答:充分利用有限的资源找出对用户影响最深的BUG和缺陷
3、软件测试与质量保证的区别
• 软件测试:是软件的执行者,目的是为了发现软件中存在的缺陷,通过静态和动态的操作来找出与预期要求不符的地方并向上级汇报。
• 质量保证:主要是指导并监督项目按照过程实施。着眼于软件开发活动中的过程、和产物,对项目进行缺陷分析,缺陷预防活动,发现过程的缺陷,提供决策参考,促进过程改进。