软件测试基础(二)

2022-04-29

软件测试

一、什么是软件测试

在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

  • 找BUG

  • 证明软件可用

二、测试目的

  • 项目早期:预防缺陷

  • 项目中期:发现严重、致命的缺陷,让软件尽快稳定

  • 项目后期:证明软件可用

三、测试活动

测试计划活动:由测试经理编写测试计划,从管理角度规划和控制整个测试工作,包括人员分工、测试范围和时间进度管理

测试设计活动(有技术难度):由资深测试工程师编写测试方案文档,从技术角度规划和控制整个测试工作

如何测试,计划中称为测试策略

测试实现活动:由测试人员编写测试用例文档。测试用例(test case):用一组数据按照一定步骤来检查软件的处理是否正确

测试执行活动:由测试人员根据测试用例文档对被测对象进行操作,搭建测试环境(Linux操作系统上搭建web服务、application服务、DB服务)、执行测试用例、提交缺陷报告(开发人员要通过调试来定位和修复缺陷、测试工程师需要通过回归测试验证缺陷是否修复)、测试记录、测试报告test reporter、编写测试总结


四、测试方法

回归测试

目的:验证缺陷是否修复、检查是否引入新的缺陷

策略:选择性回归(发现缺陷的测试用例需要重新执行、与开发人员修改代码相关的功能的测试用例需要重新执行、核心业务流程)、完全回归(执行所有测试用例,绝大部分测试用例,需要借助于自动化测试或者云测试)


根据测试依据分为:

SRS:软件的外在特性,根据外在特性开展测试叫黑盒测试,对应系统测试或功能测试

HLD:每个模块的功能(外在特性),告诉我们每个模块内部有哪些函数(内部结构),根据模块功能以及内部组成来开展测试叫灰盒测试

LLD:告诉我们每个函数的功能(外在特性),告诉我们每个函数的内部逻辑(内部结构),根据函数内部结构开展测试叫白盒测试,对应单元测试或代码测试


静态动态测试:

  • 静态测试:不执行被测对象进行测试,人工静态测试(同行评审),自动化静态测试(代码编译)

  • 动态测试:执行被测对象进行测试,例如功能测试、性能测试、安全性测试、可靠性测试、语句覆盖测试……


自动化测试:重复性高、技术难度低的工作可交给电脑完成,测试环境的搭建(自动部署),测试用例的执行(selenium自动化测试)

  • 提高测试效率,无法提高测试效果

  • 确保软件无问题,而不是去发现问题

  • 当软件稳定后,再进行自动化测试

  1. 自动化测试的局限性:脚本维护工作量比较大、UI自动化:识别页面元素,加上对应的操作

  2. 自动化测试的优点:提高回归测试效率、具有很好的一致性

  3. 自动化测试何时引入:界面很少发生变化时可引入、需要重复执行10次以上

  4. 自动化测试分为:狭隘自动化测试、广义自动化测试