目录
软件的概念:
是计算机系统中与硬件相互依存的一部分,包括程序、数据以及与其相关文档的完整集合。
- 程序是按事先设计的功能和性能要求执行的指令序列;
- 数据是使程序能正常操作信息的数据结构;
- 文档是与程序开发、维护和使用有关的图文材料。
软件组成部分:
样本和范例、产品支持信息、标签封条、用户手册、错误提示信息、安装、帮助文件、说明文件、最终产品(光盘或软盘)。
软件的分类:
- 按重要性:
- 系统软件;
- 支持软件;
- 应用软件。
- 按架构:
- 单机版软件;
- 分布式软件:C/S架构(客户端)、B/S架构(浏览器)
缺陷产生的原因:
- 需求的不完善定义;
- 客户——开发者通信失败;
- 对软件需求的偏离;
- 逻辑设计错误;
- 编码错误;
- 不符合文档编制与编码规定;
- 测试过程的不足;
- 规程错误;
- 文档编制错误。
最根本原因是需求方面的理解错误。
其他理解:
- 确信程序做了它应该做的事;
- 确认程序正确实现了所要求的功能;
- 查出规格说明中的错误以及与规格说明不符的地方;
- 测试是一切以评价程序或系统的属性、能力位目的的活动;测试是对软件质量的度量;
- 评价程序或系统的过程;
- 测试是与软件开发或维护工作并行的一个过程;
- 测试是一个获取信息,降低决策风险的过程。通过测试,向整个团队提供关于产品质量和项目环境的信息,帮助他们做出决定。
软件测试定义:
通过手工或者工具对“被测对象”进行测试操作,从而验证实际结果与预期结果之间是否存在差异。
软件测试作用:
- 通过测试工作可以发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信息;
- 测试可以记录软件运行过程中产生的一些数据,从而为决策提供数据支持;
- 测试可以降低同类型产品开发遇到问题的风险。
测试原则:
我们在执行测试工作时必须要遵守的一些规则。
- 所有的测试都应追溯到用户需求;
应用:1.测试的第一个任务是需求分析;
2.测试需求分析要做好;
3.时刻都要提醒自己考虑用户需求;
4.制造缺陷的罪魁祸首不是程序员;
5.做好需求评审,审查所作的内容是否符合用户的需求。- 尽早启动测试工作:避免缺陷雪崩,降低测试成本;
应用:测试应该是与软件开发或维护工作并行的一个过程。- 早做测试计划;
应用:1.软件测试不仅仅是测试执行;
2.应该在测试工作真正开始前的较长时间内就进行测试计划。- 穷尽测试不可能,软件测试有风险:有些功能是没有办法将所有的测试情况都罗列出来,所以任何的测试操作都有结束的时间;(完全测试、完美测试、充分测试);
原因:测试数据输入量太大、时间不够等;
应用:1.使用风险分析,确定测试的重点和优先级,控制测试的开销(时间、成本、资源);
2.风险分析需要判断技能、常识、感觉和经验。- 测试工作的Good-enough原则:既不要做过多测试,也不做不充分的测试;
应用:通过需求分析和风险分析(时间、费用、资源)找到测试重点,制定最低测试通过标准和测试内容,然后具体问题具体分析。- Pareto法则应用于软件测试:一般情况下80%的缺陷聚集在20%的关键核心业务模块中,在分析、设计、实现阶段的复审和测试工作能够发现和避免80%的缺陷,而系统测试又能找出其中缺陷中的80%(20%*80%=16%),最后的4%的缺陷可能只有在用户的大范围、长时间使用后才会暴露出来;
应用:1.做好测试需求分析和测试计划,分清测试重点;
2.尽早测试、持续测试。- 尽可能使用分阶段测试:单元测试——集成测试——系统测试——验收测试;代码规模不断加大;
- 为了达到最佳效果,应该由独立的第三方(非用户、非程序员)来构造测试;“最佳效果”指最有可能发现的测试。
- 测试旨在发现软件存在的缺陷:无论执行什么样的测试操作都只能证明当前软件是有缺陷的。
1.软件测试可以报告软件缺陷存在,却不能报告软件缺陷不存在;
2.即使在测试过程中未发现软件的失效,也不能证明被测软件没有错误;- 为了保证测试的有效性和高效性,测试必须是破坏性的、系统化的;
1.充分、有效、系统的测试可以减少软件中未被发现缺陷的可能性;
2.测试既要验证软件的正确性,更要通过破坏软件,发现缺陷的不正确性。- 找到的软件缺陷越多,说明软件隐含的缺陷越多;
软件具有集群效应,应该在发现缺陷的地方继续找找。- 杀虫剂现象:同样的一个测试用例不能重复的执行多次,因为软件会对它产生免疫;
应用:为了克服杀虫剂怪事,软件测试员必须不断编写不同的、新的测试程序、对程序的不同部分进行测试,以找出更多软件缺陷。- 并非所有软件缺陷都要修复;
原因:1.没有足够的时间;
2.不算真正的软件缺陷;
3.修复的风险太大;
4.不值得修复。- 使用木桶原理:木桶原理在软件生产方面就是全面质量管理的概念,团队合作。
- 前进两步,后退一步:测试中的一个基本问题是——缺陷修复总会以(20-50)%的机率引入新的缺陷,每次修复之后,必须做确认测试和回归测试。
再测试/确认测试:测试人员提交缺陷,开发人员修复缺陷以后,测试人员需要重新测试,验证之前提交的缺陷是否真正修复。
回归测试:测试人员提交缺陷,开发人员修复缺陷以后,测试人员需要重新测试,确保对程序修改没有给软件其他未改变部分带来新的缺陷。软件修改或者环境变更后,必须进行回归测试。- 软件测试是一个迭代的过程:无论项目采用何种开发模型,测试人员总是一个版本接一个版本的测试,其测试活动总是迭代向前的。
测试版本1->提交缺陷->修复缺陷->测试版本2->提交新缺陷->修复新缺陷->测试版本3->- 某些测试需要依赖特殊的环境;
- 测试标准:
1.国际标准:ISO(国际标准化组织)、CMM(软件能力成熟度模型)、IEEE(国际电气电子工程师协会);
2.国家标准:GB、GB/T;
3.行业标准;
4.公司标准;
5.用户规定。
测试流程:
- 分析测试需求:测试人员对用户的需求进行分析,了解软件要做什么,怎么做,进而确定将来怎么测试;
- 编写测试计划:
- 测试负责人编写测试计划;
- 测试计划的内容:包括产品概述、测试范围/测试区域/测试项(哪些地方测,哪些地方不测)、测试目标/被测特征(测哪些方面,功能、性能、兼容性等)、测试优先级(根据时间、人员、成本决定先做什么后做什么)、测试配置/测试资源(硬件、软件、人力、技术等)、测试周期(持续时间,中间是否会有迭代)、进度安排(测试任务、人员安排)(每个时期做什么任务)、测试策略(先做功能还是先做性能,或者同时进行)、测试方法/途经、测试交流、风险分析、测试标准(怎么做,怎么算合格、不合格)、需交付文档等内容。
- 设计与编写测试用例:
- 设计用例主要反映在编写测试点上;
- 根据公司格式或者选择一些模板编写测试用例;
- 执行测试:
- 搭建测试环境:安装操作系统、软件等;
- 执行测试用例,记录测试事件;
- 提交和跟踪缺陷。
- 评估与总结:
- 分析实际测试与计划的偏差:考虑是计划不合理还是工作做的不到位;
- 收集并提交各种测试文档和数据,对数据进行分析:看是否满足计划要求;
- 给出是否继续测试还是终止测试结论;
- 总结经验教训。
测试对象:
最经常测试的主体就是软件(主体功能),但是需要明白一个软件也不仅仅只有功能需要测试,我们可以将软件分为三个部分组成:功能集合+使用说明书+配置数据。
对于一款软件从无到有需要不同的过程,我们可以将这个过程分为不同阶段,然后每个阶段都会相应有测试对象。
- 需求分析阶段:各种需求规格说明书;
- 软件架构设计:API接口文档(接口测试);
- 编码实现阶段:源代码(白盒测试、单元测试);
- 系统功能使用:软件功能主体(当前行业做的最多的一种测试)
测试与调试:
区别 | 目的/任务 |
测试 | 由测试人员进行,用于发现、报告和跟踪缺陷,测试人员不修改缺陷。 |
调试 | 由开发人员进行,用于定位缺陷位置,识别缺陷产生原因,修改缺陷代码。 |
软件质量保证(SQA)与软件测试:
区别 | 目的/任务 |
质量保证 | 制定和加强促进软件开发并防止软件缺陷的标准和方法,并监管标准和过程被正确的遵循。 |
软件测试 | 在最短的时间内发现尽可能多的缺陷,并确保这些缺陷得以修复。 |