软件测试(进阶篇)面试请看

Posted 一位懒得写博客的小学生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试(进阶篇)面试请看相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

测试金字塔

在这里插入图片描述

SDK,全称:SoftWare DeveLopment Kit,一般是指软件工程师特定的软件包建立的开发工具集合
ROI:投入产出比

  1. 从下到上三层模型,投入相同的时间,人力资源等,回报率越来越低;
  2. 从下到上,测试的效率越来越低;
  3. 从下到上,定位的问题越来越难

单元测试(Unit Testing)

单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。又称为模块测试。

  • 测试阶段:编码后或者编码前(TDD)
  • 测试对象:最小模块
  • 测试人员:白盒测试工程师或开发工程师
  • 测试依据:代码和注释+详细设计文档
  • 测试方法:白盒测试
  • 测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试

步骤

  1. 在porm中加入依赖
  2. 在 file-setting-Plugins 搜索安装Junit
  3. 开始单元测试:选中要进行单元测试的类的类名(Ctrl + Shift + T) 生成单元测试类。

集成测试(Integration Testing)

集成测试也称联合测试(联调)、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。集成主要目的是检查软件单位之间的接口是否正确

  • 测试阶段:一般单元测试之后进行
  • 测试对象:模块间的接口
  • 测试人员:白盒测试工程师或开发工程师
  • 测试依据:单元测试的模块+概要设计文档
  • 测试方法:黑盒测试与白盒测试相结合
  • 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响

系统测试(System Testing)

将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段,包括回归测试和冒烟测试。

  • 测试阶段:集成测试通过之后;
  • 测试对象:整个系统(软、硬件);
  • 测试人员:黑盒测试工程师;
  • 测试依据:需求规格说明文档;
  • 测试方法:黑盒测试;
  • 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等(非功能测试)

回归测试和冒烟测试属于系统测试
回归测试
系统引入新的代码时要进行回归测试。
迭代频繁,长期迭代开发的软件产品,自动化测试。

冒烟测试
在正式测试之前对系统的主要流程和核心功能进行测试。

验收测试
纯黑盒测试,不仅仅对系统进行全面测试,验收文档(开发文档、软件设计文档,需求分析文档、功能使用文档、用户使用文档)。

按实施组织

α测试

用户或者公司内非测试和非开发人员请到现场进行测试;
时间比较集中,在开发现场沟通好产品的问题;
容易受开发环境的影响

β测试

用户在实际使用环境下进行测试;
用户测试的结果更接近于实际使用情况的反馈;
α测试优先于β测试

第三方测试

介于开发方和用户方间的组织的测试。

按是否运行划分

静态测试

静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性代码静态分析和文档测试都属于静态测试。

  • 检查项:代码风格和规则审核;程序设计和结构的审核;业务逻辑的审核;走查、审查与技术复审手册
  • 静态质量:度量所依据的标准是ISO9126。在该标准中,软件的质量用以下几个方面来衡量,即功能性(Functionality)、可靠性(Reliability)、可用性(Usability)、有效性(Efficiency)、可维护性(Maintainability)、可移植性(Portability)。

动态测试

动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。这种方法由三部分组成:构造测试用例、执行程序、分析程序的输出结果。
写测试用例、运行程序、执行测试用例

按是否手工划分

手工测试

优点:灵活、发散性测试
缺点:量大容易出错

自动化测试(Automation Testing)

按照预设的条件去执行测试,收集测试结果,设置正常验证和异常验证。
自动化前提:项目的功能要相对稳定。
自动化价值:脚本的重复使用率越高,自动化价值越高;

自动化步骤:

  • 完成功能测试,版本基本稳定;
  • 根据项目特性,选择适合项目的自动化工具,并搭建环境;
  • 提取手工测试的测试用例转化为自动化测试的用例;
  • 通过工具、代码实现自动化的构造输入,自动检测输出结果是否符合预期;
  • 生成自动测试报告;
  • 持续改进,脚本优化。

按是否查看代码划分

黑盒测试(Black-box Testing)

系统测试、验收测试

不关注程序内部的具体实现,只关注功能的输入输出是否满足客户需求
黑盒测试设计测试用例的方法:
等价类、边界值、因果图、错误猜测法、正交法、场景法

白盒测试 单元测试

测试的时候只关注功能内部程序的实现逻辑,结构和语法等。
白盒测试的方法:
语句覆盖法、循环覆盖法、路劲覆盖法、逻辑覆盖法(判定覆盖、条件覆盖、判定组合、条件组合)。

灰盒测试 集成测试

介于白盒和黑盒之间的测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。

以上是关于软件测试(进阶篇)面试请看的主要内容,如果未能解决你的问题,请参考以下文章

软件测试(进阶篇)面试请看

面试测试开发工程师:Java测试进阶篇

测试面试题集锦| 测试工具篇(附答案)

Net面试题进阶篇

测试面试题集锦| 自动化测试与性能测试篇(附答案)

费时3个月,靠着这篇软件测试进阶笔记,成功拿下了阿里腾讯等10家offer