当前位置: 首页 > 编程日记 > 正文

软件测试概述--基础篇

文章目录

    • 软件测试概述
        • 软件测试基本概念
        • 软件测试的目的和原则
        • 软件测试的分类
        • 测试用例

软件测试概述

软件测试基本概念

软件缺陷俗话说就是bug。即计算机软件或程序存在某种破坏正确运行能力的问题、错误或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需求

软件缺陷出现的原因

  1. 产品说明书:说明书不够全面、经常修改,或者整个小组没有很好的沟通
  2. 设计:设计经常变更,沟通不足
  3. 编码:软件的复杂性、文档不足、进度压力可能都会使程序员犯错
    在这里插入图片描述

软件测试的定义
概括来说呢就是为了发现错误而执行程序的过程;或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构,而精心设计的一批测试用例,并利用这些测试用例去执行程序,以发现程序错误的过程
在这里插入图片描述

软件测试的目的和原则

目的
就是要发现软件中存在的缺陷和系统的不足,提供预防或减少可能错误的信息,在过程中尽可能检测错误以防止该错误传递到下一阶段。

在这里插入图片描述
原则

  1. 不可能进行完全测试
  2. 测试中有风险存在
  3. 软件测试只能表明缺陷的存在不能证明产品已经没有缺陷
  4. 软件产品中所存在的缺陷与已发现的缺陷成正比
  5. 要避免软件测试的杀虫剂现象
  6. 及早的和不断的进行软件测试
  7. 进行回归测试
  8. 软件测试应该有计划、有组织的进行

软件测试的分类

按测试阶段划分

  1. 单元测试
    自己的理解就是测试代码的,程序员也可以自行完成。单元测试是对软件设计中最小单位–程序模块进行的测试,它着重检查程序单元是否符合软件详情设计规约中对模块功能、性能、接口和设计约束等方面的要求,发现各模块内部肯呢个存在的错误。
  2. 集成测试
    俗话说就是模块与模块间组合起来测试。集成测试是在单元测试的基础上,将已经通过单元测试的各模块有序的、递增的进行测试,它着重发现各模块接口之间的关系和相互协作中是否存在错误。在很多情况下,通过单元测试的模块集成到系统中往往还存在问题,就是由于它没有正确的与其他模块协作,或者出现了接口错误。集成测试依据的是软件概要设计规约
  3. 确认测试
    确认测试是通过检验和提供客观的证据,验证软件是否满足特定预期用途的需求。它依据软件需求规格说明书,包括用户对软件的功能,性能和某些特定的要求。如果说前两种测试主要是验证软件是都在“正确的做事”,那么确认测试就是验证软件是否在“做正确的事”
  4. 系统测试
    系统测试是将通过已确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件,外设,网络和系统软件,其他支持软件,数据和人员等其他系统元素结合在一起,在实际的运行环境下,检测其是否能够进行正确的配置、连接,以满足用户的需求。系统测试一般依据系统需求规格说明书
  5. 验收测试
    验收测试是指按项目说明书、合同、软件供需双方约定的验收依据文档等进行的完整一个系统的测试和评审,决定是都接收或拒绝接收系统。
    在这里插入图片描述

按是否需要执行被测软件划分

  1. 静态测试
    对于源代码:主要测试代码是否符合相应的标准和规范。
    对于程序界面:主要测试软件的实际界面与需求中的说明是否相符。
    对于文档:主要测试用户手册和需求说明是否符合用户的实际需求。
  2. 动态测试
    指的是实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以判断一个测试属于动态测试还是静态的,唯一的标准就是看是否运行程序。

按是否需要查看代码划分

  1. 白盒测试
    软件的白盒测试是对软件的过程性细节做细致的检查
    这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。
    因此白盒测试又称为结构测试或逻辑驱动测试。
  2. 黑盒测试
    软件的黑盒测试意味着测试要在软件的接口处进行。
    这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
    因此黑盒测试又叫功能测试或数据驱动测试。
  3. 灰盒测试
    灰盒测试,是介于白盒测试与黑盒测试之间的。
    可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了。
    这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。

按测试执行时是否需要人工干预划分

  1. 手工测试
    手工测试就是由人去一个一个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的一个步骤。
  2. 自动测试
    自动化测试适用于模块已经稳定,没有很大更改的大型项目,用于将手工测试转化成自动化代码,从而实现压力测试、回归测试等。

测试用例

测试用例设计
等价类划分法
适用场景:
有数据输入的地方,就可以使用等价类划分法。如:输入框

测试思想:
从大量数据中划分范围(等价类),然后从每个范围中挑选代表数据,这些代表数据要能反应这个范围内数据的测试结果。

概念:
有效等价类:对程序来说,有意义的、合理的数据(正确的、有效的数据)
无效等价类:对程序来说,没有意义、不合理的数据(错误的、无效的数据)

边界值
适用场景:
有数据输入的地方,在实际工作中,一般和等价类划分一起适用。、

测试思想:
边界值是程序员在编程时是最容易出错的位置,所以要测试边界。

概念:
是有效等价类和无效等价类之间的分界点,叫边界值(最小值,最大值)。还要测试次边界,也就是边界值两边的数据。

因果图/判定表
适用场景:
在一个界面中有多个控件,如果控件之间存在组合关系或者限制关系,不同的控件组合会产生不同的输出结果,为了弄清楚不同的输入组合会产生怎样的输出结果,可以使用因果图或判定表。

概念:
因:输入条件
果:输出结果
就是通过画图的方式表达输入条件和输出结果之间的关系

正交排列法
适用场合:
在一个界面中有多个控件,每个控件有多个取值,要考虑不同控件不同取值之间的组合 ,且组合数量较大的话,我们就可以使用正交排列法。

思想:
使用最少的抽样数据达到最广的,覆盖率最高的统计结果。

正交表公式如下:
L:line 行
n:表示正交表有几行,需要测试的组合的个数
n值是固定的,一旦正交表确定n值就是固定的,不需要测试人员自己计算。
m:表示正交表中允许出现的最大值
根据每个控件的取值个数来确定m值
k:表示正交表有几列
根据组合的控件个数进行确定,选择合适的正交表

场景法
适用场景:
业务比较复杂的软件系统都适合使用场景法,场景法是基于软件业务的测试方法,测试人员把自己当成最终用户,尽可能真实的模拟用户在使用此软件的操作情形:

重点模拟两类操作:
用户正确操作的业务过程—验证软件的业务功能是否正确实现
模拟用户错误操作的情形—验证软件的异常处理能力(健壮性)

测试思路:
场景法是模拟用户操作软件时的各种情景,主要用于测试软件的业务逻辑和流程。当拿到一个测试任务是,我们并不先关注某个文本框的等价类等是否满足要求,而是先关注它的主要功能和业务流程是否正确实现,这就需要场景法来完成测试。当业务流程测试没有问题,也就是软件的主要功能没有问题时,我们再去关注控件的等价类、边界值等细节测试。(先整体后细节)

场景划分:
1)基本流(有效流、正确流)
模拟用户正确的业务操作流程就是基本流
2)备选流(无效流、错误流)
模拟用户错误的操作流程就是备选流

相关文章:

Matlab与线性代数 -- 矩阵的连接

本图文介绍了Matlab中矩阵连接的cat方法。

Load balancer does not have available server for client

最近在研究spring-cloud&#xff0c;研究zuul组件时发生下列错误&#xff1a; Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: zuul-server 解决办法就是在pom文件里添加 <dependency> <groupId>or…

js 抛出异常 throw

netsuite中&#xff0c;有的时候在流程上我们需要控制&#xff0c;停止现有流程那么可以采取一种比较无奈的办法。 由于一些特殊情况&#xff0c;我们可以编写详细的流程控制&#xff0c;如netsuite销售人员可以审批一些SO单据&#xff0c;但并不是所有的SO单据他都能自己审批。…

leetcode--长按键入--python

文章目录题目题目详情示例解题思路思路代码运行结果最佳方案题目 题目详情 你的朋友正在使用键盘输入他的名字 name。偶尔&#xff0c;在键入字符 c 时&#xff0c;按键可能会被长按&#xff0c;而字符可能被输入 1 次或多次。 你将会检查键盘输入的字符 typed。如果它对应的…

Visual Studio 2008 每日提示(十四)

本篇包括tip131-tip140 http://www.watch-life.net/visual-studio/visual-studio-2008-tip-day-14.html #131、你为什么会把窗体设置成为浮动&#xff08;模式&#xff09; 原文链接:Why you would want to make a Tool Window Floating 如果你想把工具窗体放在一个特定的区域&…

mysql双机热备的实现

转&#xff1a;http://blog.csdn.net/qq394829044/article/details/53203645 Mysql数据库没有增量备份的机制&#xff0c;当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制&#xff0c;其实就是把主数据库的所有的数据同时写到备份的数据库中…

Matlab编程与数据类型 -- 多维数组

本图文详细介绍了Matlab中的多维数组。

leetcode--最长连续递增序列--python

文章目录题目题目详情示例解题思路思路代码运行结果最佳方案题目 题目详情 给定一个未经排序的整数数组&#xff0c;找到最长且连续的的递增序列。 示例 输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3。 尽管 [1,3,5,7] 也是升序的子序列, 但它不是…

va_start() va_end()函数应用

1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表void foo(...);void foo(parm_list,...);2:函数参数的传递原理函数参数是以数据结构:栈的形式存取,从右至左入栈.eg:1 #include <iostream>2 voidfun(inta, ) 3 { 4 int*temp &a; 5 temp; 6 for(i…

高考估分查分选志愿一键搞定_支付宝又操办了件人生大事

摘要&#xff1a; 可能比高考更考验心力的填报志愿&#xff0c;支付宝要帮你一键搞定。 支付宝今天正式上线集估分、查分、选志愿等众多服务于一体的高考后综合服务平台&#xff0c;陪伴高考学生的青春大考。考生在估分、查分后&#xff0c;还可以看到系统智能推荐供参考的合适…

LSGO:祝大家新年快乐!

2016年&#xff0c;团队做了很多事&#xff0c;有做成的&#xff0c;有没做成的&#xff0c;有正在推进的&#xff0c;有主动放弃的&#xff0c;有做的好的&#xff0c;有做的不好的&#xff0c;但总体上还是做了很多的事情。希望2017年能做更多一点的事情&#xff0c;好的做的…

VMware安装Centos7桌面版超详细图文过程

前提准备&#xff1a; VMware Workstation虚拟机 centos7.4 镜像&#xff08;我下载的DVD版4.1G&#xff09; 打开VM&#xff0c;点击文件->新建虚拟机 不是说你分给虚拟机2G内存&#xff0c;主机就少了2G的内存。比如说假设主机内存为8G&#xff0c;虚拟机关闭的时候&…

关于ASP.NET Web 部件连接的引入

创建用于 ASP.NET 2.0 应用程序的 Web 部件 您可以用两种方法创建 Web 部件。第一种方法涉及创建一个自定义的 Web 部件类&#xff0c;该类从 System.Web.UI.WebControls.WebParts 命名空间中定义的 WebPart 类继承。使用该方法时&#xff0c;将自定义的 Web 部件类打包到一个程…

hive2.1.1安装配置

2019独角兽企业重金招聘Python工程师标准>>> 一、Hive 运行模式 与 Hadoop 类似&#xff0c;Hive 也有 3 种运行模式&#xff1a; 1. 内嵌模式 将元数据保存在本地内嵌的 Derby 数据库中&#xff0c;这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显&am…

高斯消元法对矩阵LU分解的影响

** 欢迎大家到Matlab与线性代数专栏中查看相关图文。 ** 本文详细介绍了Matlab进行lu分解操作时l不为三角形的原理。

Windows10下SSH远程拷贝文件

因为今天需要把服务器上面的东西备份一下&#xff0c;自己平时也在windows下面做的测试&#xff0c;所以用windows在服务器拷贝文件到本地。 首先需要下载一个工具pscp.exe 下载链接 然后再把它移动到这个目录下面就行了 WINR打开命令行 pscp -r 用户名ip:/root/flask E:/refl…

如何在Matlab中获取函数参数的数目?

本图文详细介绍了Matlab中获取函数参数数目的方法。

新站测试中欢迎访问

想买画的可以来看看哦 www.oneartone.com 转载于:https://www.cnblogs.com/liugod/archive/2009/01/04/1368082.html

FTP匿名访问修复方法

window2003 window2008

LeetCode Python题解(一)----双指针法

根据&#xff1a; github优秀创作者. 算法思想 1.双指针法 2.排序 3.贪心思想 4.二分查找 5.分冶 6.搜索 7.动态规划 8.数学 1. 双指针法&#xff1a; 双指针主要用于遍历数组&#xff0c;两个指针指向不同的元素&#xff0c;从而协同完成任务。 1.1 有序数组的 Two Sum 题…

解密淘宝网的开源架构(转)

淘宝网&#xff0c;是一个在线商品数量突破一亿&#xff0c;日均成交额超过两亿元人民币&#xff0c;注册用户接近八千万的大型电子商务网站&#xff0c;是亚洲最大的购物网站。那么对于淘宝网这样大规模的一个网站&#xff0c;我猜想大家一定会非常关心整个网站都采用了什么样…

不上全站https的网站你们就等着被恶心死吧

2019独角兽企业重金招聘Python工程师标准>>> 测试脚本 #!/bin/sh wget \ --user-agent"Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19" \-r \-P a…

《C#精彩实例教程》小组阅读01 – MSDN是什么?

学习编程&#xff0c;特别是在Windows环境下的编程&#xff0c;当我们遇到问题时&#xff0c;最先想到的权威解答机构就是MSDN了。 什么是MSDN呢&#xff1f; MSDN – Microsoft Developer Network 是微软一个期刊产品&#xff0c;专门介绍各种编程技巧。同时它也是独立于Mic…

LeetCode Python题解(二)----排序

根据&#xff1a; githhub优秀创作者. 算法思想 1.双指针法 2.排序 3.贪心思想 4.二分查找 5.分冶 6.搜索 7.动态规划 8.数学 快速排序 用于求解 Kth Element 问题&#xff0c;也就是第 K 个元素的问题。 可以使用快速排序的 partition() 进行实现。需要先打乱数组&#xff…

人生快乐之道(组图)

举报 转载于:https://www.cnblogs.com/qqnnhhbb/articles/1373323.html

Codeforces Round #270

Codeforces Round #270 题目链接 A&#xff1a;我是筛了下素数。事实上偶数仅仅要输出4和x - 4&#xff0c;奇数输出9和x - 9就可以 B&#xff1a;贪心的策略&#xff0c;把时间排序后。取每k个的位置 C&#xff1a;贪心。每次遇到一个人尽量让他用字典序小的&#xff0c;假设不…

Matlab与数据结构 -- 如何获取完整文件名

本图文介绍了Matlab中获取完整文件名的函数fullfile()。

用Git上传删除本地项目到gitlab---图文解析

Git简介 Git是目前世界上最先进的分布式版本控制系统 故事起源&#xff1a;如果你用Microsoft Word写过长篇大论&#xff0c;那你一定有这样的经历&#xff1a; 想删除一个段落&#xff0c;又怕将来想恢复找不回来怎么办&#xff1f;有办法&#xff0c;先把当前文件“另存为……

正常的人|正确的作息时间

正确的作息时间 标签&#xff1a;健康/保健 分类&#xff1a;美容护肤晚上9点——11点为免疫系统&#xff08;淋巴&#xff09;排毒时间。此时间应安静或听音乐 晚间11点——凌晨1点&#xff0c;肝的排毒时间&#xff0c;需在熟睡中进行凌晨1点——3点&#xff0c;胆的排毒时间…

基于Matlab的BP神经网络在语音特征信号识别中的应用

本微信图文详细介绍了BP神经网络在语音特征信号中的应用&#xff0c;并给出了Matlab源码。