摘要:软件测试是软件工程中非常重要的一个环节,本文将从软件测试的目的、白盒测试和黑盒测试两大分类和以及各自的具体分类,来阐述软测试的相关知识。

一、软件测试的目的

发现缺陷

尽早和尽量多的发现被测对象中的缺陷,应该是测试人员测试过程中最常提起的一个测试目标,也是所谓测试价值的一个的重要体现。发现缺陷的目的是推动开发人员定位和修复问题,测试人员通过再测试和回归测试,确保开发人员已修复缺陷,并没有影响原来正常的区域,从而提高产品质量。开发生命周期的每个阶段,都应该有测试的参与,并尽量多的发现本阶段的缺陷,从而大大提高本阶段的缺陷阶段遏制能力,从而提高测试效率、降低成本和提高质量。

二、软件测试的两大分类

1、白盒测试

白盒测试是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。

白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路劲测试。其中逻辑覆盖包括语句覆盖、判断覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

白盒测试是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

2、黑盒测试

黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。

测试人员以用户的角度,通过各种输入和观察软件的各种输出结果来发现软件存在的缺陷,而不关心程序具体如何实现的一种软件测试方法。

三、白盒测试具体分类

(1)单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。
桩模块(stud)是指模拟被测模块所调用的模块,驱动模块(driver)是指模拟被测模块的上级模块,驱动模块用来接收测试数据,启动被测模块并输出结果。

(2)集成测试(integration testing),是单元测试的下一阶段,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部门。
集成测试就是用来检查各个单元模块结合到一起能否协同配合,正常运行。

(3)系统测试(system testing),指的是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。
系统测试的主要依据是《系统需求规格说明书》文档。

(4)验收测试(acceptance testing),指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。

验收测试又分为a测试和beta测试,其中a测试指的是由用户、 测试人员、开发人员等共同参与的内部测试,而beta测试指的是内测后的公测,即完全交给最终用户测试。

四、黑盒测试具体分类

1)功能测试(function testing),是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。

包括逻辑功能测试(logic function testing)

界面测试(UI testing)UI=User Interface

易用性测试(usability testing):是指从软件使用的合理性和方便性等角度对软件系统进行检查,来发现软件中不方便用户使用的地方。

兼容性测试(compatibility testing):包括硬件兼容性测试和软件兼容性测试

(2)性能测试(performance testing)

软件的性能主要有时间性能和空间性能两种

时间性能:主要指软件的一个具体事务的响应时间(respond time)。

空间性能:主要指软件运行时所消耗的系统资源。

软件性能测试分为:

一般性能测试:指的是让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测试。

稳定性测试也叫可靠性测试(reliability testing):是指连续运行被测系统检查系统运行时的稳定程度。

负载测试(load testing):是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。

压力测试(stress testing):是指持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。(Validate the system or software can allowed the biggest stress.)

(3)接口测试(Interface Testing)

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

推荐一款接口测试和接口文档生产工具:apipost

五、其他测试类型

回归测试(regression testing)是指对软件的新的版本测试时,重复执行上一个版本测试时的用例。(When a new build or release is deployed, repeat all the test cases which has executed in the last build or release.)

冒烟测试(smoke testing),是指在对一个新版本进行大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。(validate the major function is deployed or not in software of system when a new build or release is implement.)

随机测试(random testing),是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。(means or all the test data is random, to validate the some edge bugs.)

本文分享自华为云社区《软件测试的方法 》,原文作者:奔四码农。

点击关注,第一时间了解华为云新鲜技术~

资深码农:拿下软件测试,只需掌握好这两种方法!相关推荐

  1. java校验码的设计_Java动态验证码单线设计的两种方法

    1.java的动态验证码我这里将介绍两种方法: 一:根据java本身提供的一种验证码的写法,这种呢只限于大家了解就可以了,因为java自带的模式编写的在实际开发中是没有意义的,所以只供学习一下就可以了 ...

  2. fceux源码解析_fceux源码解析_从源代码制作deb包的两种方法以及修改已有deb包(转载)...

    1. 原理 1) deb包通常包含两部分:控制信息(DEBIAN目录).安装内容(模拟"/"目录) 2) 通过解开已有的deb包看其中内容 i. 释放安装内容到dirname目录中 ...

  3. fceux源码解析_从源代码制作deb包的两种方法以及修改已有deb包(转载)

    1. 原理 1) deb包通常包含两部分:控制信息(DEBIAN目录).安装内容(模拟"/"目录) 2) 通过解开已有的deb包看其中内容 i. 释放安装内容到dirname目录中 ...

  4. 从码农到工匠,程序员必备的两本提升自我修养的书

    软件设计不仅是"技术"(Technique),更是一门"技艺"(Craftsmanship),要想控制复杂度,防止系统腐化.我们不能只满足做一个搬砖的" ...

  5. Java码农必须掌握的循环删除List元素的正确方法

    转载自 Java码农必须掌握的循环删除List元素的正确方法 首先看下下面的各种删除list元素的例子 public static void main(String[] args) {List< ...

  6. 百钱买百鸡python编程列表推导式_使用循环和列表推导式两种方法求解百钱买百鸡问题。假设大鸡5元一只,中鸡3元一只,小鸡1元三只,现有100元钱想买100只鸡,有多少种买法?...

    [程序题]编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数 1/1+1/3+...+1/n [单选题]患者男,67岁.确诊为原发性支气管肺癌,为行手术 ...

  7. 读取xml文件转成ListT对象的两种方法(附源码)

    读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件,是项目中经常要用到的,所以就总结一下,最近项目中用到的读取xml文件并且转成List<T>对象的方法, ...

  8. 转:让程序只运行一个实例的四种方法

    先留着以后有用. 让程序只运行一个实例的四种方法 综述:让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定标志了,如果 ...

  9. 利用多线程爬虫搭建代理ip池的两种方法(含源码)

    搭建爬虫代理ip池的两种方法(含源码) 前言 一.ip池是什么? 二.爬取原理 三.使用步骤 方法一 爬取网站https://www.kuaidaili.com/ 验证 存取到mysql 方法二 爬取 ...

最新文章

  1. unittest多线程生成报告-----BeautifulReport
  2. 成功解决AttributeError: 'DataFrame' object has no attribute 'reshape'
  3. 可滚动Widget SingleChildScrollView
  4. P1273 有线电视网
  5. qt爬取网页信息_豆瓣TOP250数据爬取
  6. java sql 登录失败_java – 接收连接到SQL Server 2008的SQLException“用户登录失败”
  7. php 日期时间 取日期,从PHP中的文本中提取日期,时间和日期范围
  8. Centos 云服务器磁盘占用率90%以上的排查解决
  9. Java数学工具类MathUtil
  10. 从零开始做Vue前端架构(2)
  11. 如何在Linux里面安装Java的运行环境(详细过程)
  12. mysql5.7 报错1055_MySql5.7 报错 1055
  13. RFC 822 中文版 MIME解析基础(4)(第5-6也)
  14. 金三银四最新Java面试题总结前199+1页都在这里了,非常详细
  15. js如何实现拆分字符串并依次输出
  16. Android app ADB命令
  17. 主板的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. win10系统卷影复制服务器,卷影复制Windows 10与全能备份软件
  19. python爬虫技术源码_实战|手把手教你用Python爬虫(附详细源码)
  20. cookie清空Java_java清除及设置cookie代码

热门文章

  1. js中的Java式继承
  2. Markdown完整语法说明
  3. Bootstrap3 Font Awesome 字体图标旋转或翻转图标
  4. 深度学习笔记(49) 风格代价函数
  5. c++ gdb 绑定源码_2020重学Go系列:30. 非常详细的 Go 语言 GDB 调试指南
  6. c语言用于提示的指令,C语言指令、符号表.doc
  7. usb禁止重定向_一种USB重定向处理方法和系统与流程
  8. python主要用于做什么-python主要用于哪些方向
  9. 自考专科计算机信息管理专业好,计算机信息管理(专科)专业介绍
  10. jq往字符串中插入_jq: dom-插入