软件测试定义、原则

软件测试定义

  • 软件测试的目标应该服从软件项目的目标。软件测试通过使用更高效的方法和工具,提升软件开发效率及软件开发质量。
  • 在规定条件下对软件系统进行审核、运行和评估,验证软件系统是否满足需求。
  • 预防、发现、跟踪软件的缺陷,提高产品质量。
  • 软件测试通过技术手段,更早、更快、更多地发现缺陷,从而降低这些缺陷可能带来的风险。

 

软件测试原则-思维

  • 发现尽可能多的缺陷,不是为了说明软件中没有缺陷。
  • 成功的测试在于发现迄今为止尚未发现的缺陷。——质量和个人追求
  • 测试绝不能证明软件100%正确,即使经过了最严格的测试之后,仍然可能还有没被发现的错误潜藏在软件中。
  • 评审——头脑风暴——交叉测试 例如:5个人,10个模块
  • 测试越早,发现问题后解决问题的成本越小。
  • 测试工作是有计划的,应尽早开展测试工作。——测试计划
  • 尽量避免测试自己开发的程序(针对开发而言)
  • 测试只能证明缺陷存在,不能证明缺陷不存在
  • “彻底地测试”难以成为现实,要考虑时间、费用等限制,不允许无休止的测试
  • 测试都应追溯到用户需求。
  • 测试设计和测试执行应该进行分离。(测试设计:写测试用例;测试执行:对照测试用例进行操作,一步步操作)【如果公司分离的话,会提升成本,所以有的公司不分离】
  • 软件缺陷具有免疫性,应该尽可能多的采用多种方法和数据对软件进行测试。

 

全程质量保证

  • 决定软件质量的关键因素有需求分析、设计和实现等,测试是贯穿于上诉过程中的一种检查手段
  • 测试是提高软件质量最直接的手段,但不是全部,软件开发周期中的各个环节都会影响到软件的质量;
  • 测试能够提高软件的质量,但是提高质量不能完全依赖测试。【代码开发有时候更重要】

 

如何进行高效的测试

  1. 可以尝试通过一些持续集成的手段,今早开展测试。(部分功能完成开发,其他功能没有完成,已经完成部分的功能不受到其他未完成功能的影响,所以可以提前对已经完成的功能进行测试,而不需要等待所有的功能全部完成)
  2. 加入自动化技术,可以通过python+selenium 完成一些自动化测试
  3. 提升软件质量的重要手段:做好软件测试预防工作(需求评审);测试需要对缺陷进行检查;
  4. 一个高质量的软件系统是设计和开发出来的,并不是测试出来的。

 

软件测试流程



需求评审:产品经理把客户需求整理成文档(需求规格说明书),然后开发和测试都以这个为依据

制定测试计划:测试经理或者测试主管制定测试计划,安排好什么时间完成某项测试任务

设计测试用例:测试人员负责设计测试用例,然后组织开会对测试用例进行评审

执行测试:进行测试

 

敏捷测试流程图



 

软件测试启动和结束准则

测试启动准则:

同时满足以下条件,允许开始测试:

  1. 测试计划已经制定并且通过了审批;
  2. 测试用例已经设计并且通过了审批;
  3. 被测试对象已经完成开发完毕并等待测试;

 

测试何时结束:

  1. 基于测试用例的规则:例如测试了8000个用例
  2. 基于“测试期缺陷密度”的规则:例如5天总bug数小于多少个,没有严重的bug
  3. 基于“运行期缺陷密度”的规则:例如试运行有多少bug

 

测试完成准则:

对于非严格系统可以采用“基于测试用例”的准则。同时满足以下条件允许结束测试:

  1. 功能性测试用例通过率达到100%;
  2. 非功能性测试用例通过率达到90%;

对于严格系统,应当补充“基于测试期缺陷密度”的规则:

  1. n天内“测试期缺陷密度”全部低于某个值m;