小张笔记 | 软件测试如何快速入门?
软件测试定义、原则
软件测试定义
- 软件测试的目标应该服从软件项目的目标。软件测试通过使用更高效的方法和工具,提升软件开发效率及软件开发质量。
- 在规定条件下对软件系统进行审核、运行和评估,验证软件系统是否满足需求。
- 预防、发现、跟踪软件的缺陷,提高产品质量。
- 软件测试通过技术手段,更早、更快、更多地发现缺陷,从而降低这些缺陷可能带来的风险。
软件测试原则-思维
- 发现尽可能多的缺陷,不是为了说明软件中没有缺陷。
- 成功的测试在于发现迄今为止尚未发现的缺陷。——质量和个人追求
- 测试绝不能证明软件100%正确,即使经过了最严格的测试之后,仍然可能还有没被发现的错误潜藏在软件中。
- 评审——头脑风暴——交叉测试 例如:5个人,10个模块
- 测试越早,发现问题后解决问题的成本越小。
- 测试工作是有计划的,应尽早开展测试工作。——测试计划
- 尽量避免测试自己开发的程序(针对开发而言)
- 测试只能证明缺陷存在,不能证明缺陷不存在
- “彻底地测试”难以成为现实,要考虑时间、费用等限制,不允许无休止的测试
- 测试都应追溯到用户需求。
- 测试设计和测试执行应该进行分离。(测试设计:写测试用例;测试执行:对照测试用例进行操作,一步步操作)【如果公司分离的话,会提升成本,所以有的公司不分离】
- 软件缺陷具有免疫性,应该尽可能多的采用多种方法和数据对软件进行测试。
全程质量保证
- 决定软件质量的关键因素有需求分析、设计和实现等,测试是贯穿于上诉过程中的一种检查手段
- 测试是提高软件质量最直接的手段,但不是全部,软件开发周期中的各个环节都会影响到软件的质量;
- 测试能够提高软件的质量,但是提高质量不能完全依赖测试。【代码开发有时候更重要】
如何进行高效的测试
- 可以尝试通过一些持续集成的手段,今早开展测试。(部分功能完成开发,其他功能没有完成,已经完成部分的功能不受到其他未完成功能的影响,所以可以提前对已经完成的功能进行测试,而不需要等待所有的功能全部完成)
- 加入自动化技术,可以通过python+selenium 完成一些自动化测试
- 提升软件质量的重要手段:做好软件测试预防工作(需求评审);测试需要对缺陷进行检查;
- 一个高质量的软件系统是设计和开发出来的,并不是测试出来的。
软件测试流程
需求评审:产品经理把客户需求整理成文档(需求规格说明书),然后开发和测试都以这个为依据
制定测试计划:测试经理或者测试主管制定测试计划,安排好什么时间完成某项测试任务
设计测试用例:测试人员负责设计测试用例,然后组织开会对测试用例进行评审
执行测试:进行测试
敏捷测试流程图
软件测试启动和结束准则
测试启动准则:
同时满足以下条件,允许开始测试:
- 测试计划已经制定并且通过了审批;
- 测试用例已经设计并且通过了审批;
- 被测试对象已经完成开发完毕并等待测试;
测试何时结束:
- 基于测试用例的规则:例如测试了8000个用例
- 基于“测试期缺陷密度”的规则:例如5天总bug数小于多少个,没有严重的bug
- 基于“运行期缺陷密度”的规则:例如试运行有多少bug
测试完成准则:
对于非严格系统可以采用“基于测试用例”的准则。同时满足以下条件允许结束测试:
- 功能性测试用例通过率达到100%;
- 非功能性测试用例通过率达到90%;
对于严格系统,应当补充“基于测试期缺陷密度”的规则:
- n天内“测试期缺陷密度”全部低于某个值m;