测试基本原则,软件开发流程,测试流程/技术体系

软件测试的基本原则

  1. 穷尽测试是不可能的:由于时间,人力,成本等原因,不可能把所有场景都测一遍
  2. 测试尽早介入:更早发现缺陷,解决它的成本越低。测试左移
  3. 缺陷集群性(2/8原则):缺陷往往存在在20%的模块中,如果在一个模块里发现了bug, 可能该模块里还存在更多的bug,需要进行更深入的测试. 二八原则是有原因的:可能是因为这个模块本身逻辑比较复杂,或者需求比较模糊。

软件测试的对象

最经常测试的主体就是软件程序,但是软件并不单单指程序,软件其实是由三部分组成的:文档,代码,程序。所以测试对象就包含了这三部分。
在需求分析阶段,会有需求文档和接口文档要测试。在编码实现阶段,会有源代码要测试。在系统功能实现阶段,有软件程序需要测试

软件开发流程

软件开发模型

  1. 传统瀑布模型:1)软件开发的各项活动严格按照线性方式来进行
    2) 当前活动接受上一项活动的工作结果
    优点:开发的各个阶段比较清晰,强调文档,适合需求稳定的产品。
    缺点:早期的错误可能要等到开发后期阶段才能发现
  2. 敏捷开发模型
    特点:增量迭代,小步快跑
    XP(极限编程)
    SCRUM
  3. DevOps模型
    持续开发,持续测试,持续集成,持续部署,持续监控

测试流程体系

软件测试模型

  1. V模型
    需求分析,概要设计,详细设计,编码,单元测试,集成测试(接口),系统测试(功能,性能,兼容),验收测试
    缺点:测试从编码阶段完成后开始,测试介入时间晚,修复bug代价大
  2. W模型
    测试与开发是并行关系,测试伴随着整个软件开发周期,更早介入到测试
  3. H模型

软件测试流程

  1. 传统的测试流程:单元测试,集成测试,冒烟测试,系统测试,回归测试,验收测试
  2. 测试左移:左移是往测试之前的开发阶段移,在开发早期介入测试。
    测试左移的方法:代码评审(code review),代码审计,单元测试(白盒测试的一种),自动化冒烟测试,研发自测
  3. 测试右移:是往发布之后移,产品上线后进行线上监控。

测试技术体系

软件测试分类

  1. 按开发阶段分类:单元测试,集成测试,系统测试(功能,兼容,性能,安全),验收测试(α测试:在开发环境下 β测试:在实际环境下用户测)
  2. 按是否查看代码:白盒测试(研究产品内部的源代码和程序结构),黑盒测试(完全不看代码),灰盒测试(看部分代码)
  3. 测试执行方式:静态测试(不运行程序,比如代码评审,文档评审),动态测试
  4. 按是否手工执行:手工测试,自动化测试

分层测试体系

自动化分层测试体系:70%单元测试(Unit Tests),20%服务测试(接口测试,Service Tests),10%用户界面测试(公司里最核心,相对比较稳定,逻辑不是很复杂的业务,UI Tests)

单元测试的方法:Java语言:JUnit和TestNG框架 。Python语言:unittest和pytest框架

接口测试:检查接口参数传递的正确性,接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性。
接口测试的方法:

  1. 代理工具,对接口的数据抓包:Charles, Fiddler,
  2. postman
  3. Jmeter: 可以进行接口功能和性能的验证
  4. loadrunner
  5. 接口测试框架:python语言:Requests, HttpRunner. Java: HttpClient, RestAssured
1 Like