软件测试

软件测试可以理解成为一个用来鉴定软件是否符合需求以及是否有缺陷的过程。根据不同的维度,软件测试又可以细分成为不同的测试类型。

首先根据测试方法来划分,可以分为:
  • 黑盒测试:最基础的功能测试,不关心内部的代码实现,而仅验证输入输出的正确性。
  • 白盒测试:基于逻辑驱动或者基于代码测试,打开代码内部的实现,去研究源代码中的接口或者具体实现的正确性。
  • 灰盒测试:介于二者之间的一种测试。
其次,根据测试目标来划分,又可以分为:
  • 功能测试:对产品和模块的各个功能进行测试
  • 性能测试:对系统的各项性能指标进行测试
  • 压力测试:测试软件或系统的负载能力,挖掘隐患
  • 兼容性测试:对产品和软硬件之间的兼容性进行测试,比如软件在各种不同安卓机型上的兼容性。
  • 安全性测试:通过不同方法发现软件的安全性问题,比如信息泄露、非法使用、恶意破坏等等。
  • 其他专项测试:比如弱网络测试、耗电量测试、流畅度测试等等
最后,如果根据软件开发阶段来划分,每个阶段又可以做:
  • 单元测试:对程序中的独立模块进行白盒测试,目的是检验软件基本组成单位的正确性
  • 集成测试:通过对单元模块进行组合测试,目的是验证单元模块之间的接口是否正确
  • 系统测试:对整个系统进行完整测试,验证整个系统的正确性与合规性
  • 回归测试:当软件发生变更的时候,对这次变更可能受影响的功能模块进行验证
  • 验收测试:测试的最后一个阶段,软件发布或者上线前确保软件质量
其他常用测试概念:
  • 冒烟测试:冒烟测试是对软件最基本的功能进行简单测试,低成本的判断软件是否可测

    冒烟测试来源于硬件的测试,当电路板做好后,首先会进行一次加电,如果没有冒烟才会开始进行接下来的测试,否则说明产品没有达到最基本的质量要求,需要重新制作。

  • 探索性测试:探索性更多的依赖测试人员的个人经验或者特长,依靠的是测试人员的主观能动性。

    探索性测试的重要性可以参考游戏测试领域,千千万万的玩家会在各种意想不到的环境下以意想不到的方式来进行游戏,所以游戏的测试者不仅要掌握系统的测试方法论、先进的测试工具以外,还要有丰富的游戏经验和探索的测试思维。

讲了这么多,所有的测试,通过手工完成是一种简单而原始的方式,但是由于测试过程中会存在大量的重复性工作,比如每次变更之后都要执行一次的回归测试,比如要在几百台手机上执行相同用例的兼容性测试,所以在工作过程中,我们希望能够不断的用代码来帮助我们完成测试,也就是自动化测试。

 

 

 

 

 

 

 

posted @ 2020-10-16 22:29  anobscureretreat  阅读(136)  评论(0编辑  收藏  举报