【软件工程】软件测试

 

软件测试的对象


软件=程序+文档
测试对象:各个阶段产生的源程序和文档。


软件测试的目的


基于不同的立场,对软件测试的目的存在着两种完全对立的观点。
(1)一种观点是通过测试暴露出软件中所包含的故障和缺陷(从用户的角度);
(2)另一种是希望测试成为表明软件产品中不存在错误的过程,验证该软件中已正确地实现了用户的要求,因此,它们倾向于选取导致程序失败概率最小的测试实例和数据。
显然,第二种观点对完善和提高软件质量和可靠性毫无价值,因此测试的目的应该是通过软件测试尽可能多地发现并改正软件种存在的错误。


软件测试的定义


Glenford J. Myers把这一观点归纳为:
⑴测试是程序执行的过程,其目的在于发现错误。
⑵一个好的测试实例在于发现至今未发现的错误。
⑶一个成功的测试是发现了至今未发现的错误的测试。
因此,软件测试(Software Testing)是从引起和发现错误的目的出发执行某一程序的过程。


错误的类型


(1)功能错误:处理功能说明不完整或不确切,致使编程时对功能有误解而产生的错误。
(2)系统错误:与外部接口错误、子程序调用错误、参数使用错误等。
(3)过程错误:算术运算错误和逻辑运算错误
(4)数据错误:数据结构、实体、属性错误。
(5)编程错误:语法错误、程序逻辑错误、编程书写错误等。

软件测试过程模型


(1)测试设计
(2)测试执行
(3)测试结果比较


软件测试技术


测试法分为黑盒法和白盒法。


1.黑盒(Black-box Testing)法

黑盒法又称为功能测试法,它是根据程序功能的分析,推演出由函数
定义域中有代表性的元素组成测试集,这些数据应包括对程序是有效的和无效的输入,极端的、正常的和特殊的数据元素。因此,黑盒测试法是从外界来检查模块或程序的功能,也即根据模块的输入和输出,得出所得结果得差异。这种测试无须知道模块的内部逻辑,而是给定一输入,检查是否会得到所期望的输出。功能测试法又具体分为等价类法,边值分析法,因果图法和错误猜测法等。


2.白盒法

白盒法也称之为结构测试或逻辑覆盖法。它是根据对软件内部逻辑结构的分析,选取测试数据集(即测试用例:Testing Case),而测试数据集对程序逻辑的覆盖程度决定了测试完全性的程度。常用的几个覆盖标准有:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖。


【例题▪填空题】黑盒法又称为_______法,黑盒测试法是从外界来检查模块或程序的功能,也即
根据模块的输入和输出,得出所得结果得差异。
【答案】功能测试


路径测试技术(白盒测试)★依据的是程序的逻辑结构。


(1)控制流程图
基本元素:过程块、节点、判定。
链、路径的概念。
注意:控制流程图和程序流程图的差别。
(2)测试策略
a)路径覆盖:执行所有可能穿过程序控制流程的路径。最强的测试度量。
b)语句覆盖:至少执行程序中所有语句一次。最低的测试度量。
c)分支覆盖:至少将程序中的每个分支执行一次。
d)条件覆盖与条件组合覆盖
语句覆盖≤分支覆盖≤条件组合覆盖≤路径覆盖
(3)路径选取与用例设计
最小的强制性测试需求是语句覆盖率。

【例题】根据下列程序流程图,设计不超过2组的测试用例,使之满足语句覆盖,要求给出每组测试数据的执行路径、输入值、输出值及两个判定(3)和(5)的判定结果。


【解析】此类题目属于综合应用题(每题10分),考核知识点为路径测试技术。
在本题中,要求设计测试用例,满足语句覆盖,即所有语句都必须执行一遍。
A、B、C的值决定了程序执行的顺序
A、B、C的值执行顺序结果

 


路径选取的一般原则


(1)选择最简单的、具有一定功能含义的入口/出口路径
(2)在已选取的基础上,选择无循环的路径,选取短路径、简单路径
(3)选取没有明显功能含义的路径,要研究该路径为什么存在


基于事务流的测试技术


事务流测试的步骤


a)获得事务流程图
b)浏览、复审
c)用例设计
d)测试执行


等价类法
是根据程序的I/O特性,将程序的输入划分为有限个等价区段,使得从每个区段内抽取的代表性数据进
行的测试等价于该区段内任何数据的测试。对于每个输入条件存在着程序有效输入的有效等价类和对程序错
误输入的无效等价类。例如,某实数X的取值范围假设为a<X<b,则所有[a+1,b-1]之间的实数构成了有效
等价类,而任何[-∞,a]或[b,+∞]之间的实数构成了两个无效等价类。


边值分析法


是一种根据I/O边界等价类上或紧靠边界的条件,选择测试用例的更有效的方法。例如,给定三个点,
判定能否构成三角形,可选取两边之和等于第三边的实例作为边值分析法的测试用例。


【例题】有一个学生选课系统:程序的输入条件为:每个学生可以选修1至3门课程,试用黑盒测试法完成
测试。
(1)按等价类划分法,设计测试用例(要求列出设计过程);
(2)按边界值分析法,设计测试用例。


【解析】
(1)等价类法:
课程门数<1 
课程门数>3 
课程门数1~3 
(2)边界值分析法
课程门数=1 
课程门数=3 


因果图法


是通过从用自然语言书写的功能说明表中找出因—输入条件和果—输出结果,通过因果图将功能说明转
换成一张判定表,然后为每种输出条件的组合设计测试用例。
错误推测法是根据测试人员的经验和直觉推测程序种可能存在的各种错误。
 


软件测试步骤


软件测试是按照与系统开发相反的方向来进行的。依次为:单元测试(模块测试)、集成测试、有效性测试和系统测试


1.单元测试


单元测试(Unit Testing)又称模块测试(Module Testing),或模块分调,用于测试单个程序模块,确定模
块的逻辑和功能是否正确。
单元测试采用白盒测试技术。
(1)模块接口
(2)局部数据结构
(3)重要的执行路径
(4)错误执行路径
驱动模块和承接模块。


2.集成测试


集成测试(Integration Testing)用来测试模块之间接口的正确性,也即模块之间的数据和控制传递。集成测
试是与单元测试平行进行的。
集成测试采用黑盒测试技术。
(1)自顶向下的集成测试:需要设计承接模块
(2)自底向上的集成测试:需求设计驱动模块


3.有效性测试


目的:发现软件实现的功能与需求规格说明书不一致的错误。
方法:采用黑盒测试技术


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/73576.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汇编指令练习

1.大小比较&#xff08;循环&#xff09; start: /*mov r0,#0x9mov r1,#0xfb LoopLoop:cmp r0,r1beq stopsubhi r0,r0,r1subcc r1,r1,r0b Loop stop:b stop.end 仿真图 2. 1到100之和 start:mov r0,#0x1mov r1,#0x0b sum sum:add r1,r1,r0add r0,r0,#0x1cmp r0,#0x65beq sto…

SRE之前端服务器的负载均衡

写在前面 今天和小伙伴们分享一些前端服务器的负载均衡技术内容为结合《 SRE Google运维解密》 整理&#xff1a; 涉及DNS 负载均衡VIP 负载均衡反向代理负载均衡 理解不足小伙伴帮忙指正 傍晚时分&#xff0c;你坐在屋檐下&#xff0c;看着天慢慢地黑下去&#xff0c;心里寂寞…

ARM--day2(cpsr、spsr、数据搬移指令、移位操作指令、位运算操作指令、算数运算指令、比较指令、跳转指令)

.text .global _gcd _gcd:mov r0,#9mov r1,#15b loop loop:cmp r0,r1beq stopsubhi r0,r1bhi loopsubcc r1,r0bcc loopstop:b stop.end用for循环实现1~100之间和5050 .text .global _gcd _gcd:mov r0,#0x0mov r1,#0x1mov r2,#0x64b loop loop:cmp r1,r2bhi stopadd r0,r0,r1ad…

0101xss入门及pikachu靶场-xss-web安全-网络安全

文章目录 0 概述1 环境准备2 反射型xss2.1 概述2.1 靶场-反射型xss&#xff08;get&#xff09; 3 存储型xss3.1 概述3.2 靶场-存储型xss 4 DOM型xss4.1 概述4.2 靶场-DOM型xss 5 问题总结6.1 再次启动pikachu容器报错 结语 0 概述 学习路线&#xff0c;如如下图所示&#xff…

前后端分离------后端创建笔记(03)前后端对接(上)

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论&#xff0c;如有侵权请联系 源码&#xff1a;https://gitee.com/green_vegetables/x-admin-project.git 素材&#xff1a;https://pan.baidu.com/s/…

[保研/考研机试] 杨辉三角形 西北工业大学复试上机题 C++实现

题目描述 Time Limit: 1000 ms Memory Limit: 256 mb 输入n值&#xff0c;使用递归函数&#xff0c;求杨辉三角形中各个位置上的值。 输入描述: 一个大于等于2的整型数n 输出描述: 题目可能有多组不同的测试数据&#xff0c;对于每组输入数据&#xff0c; 按题目的要求输…

Java代理模式——静态代理与动态代理

代理模式 代理模式允许你为其他对象提供一个代理&#xff0c;以控制对这个对象的访问。代理模式在不改变实际对象的情况下&#xff0c;可以在访问对象时添加额外的功能。 可以理解为代理模式为被代理对象创造了一个替身&#xff0c;调用者可以通过这个替身去实现这个被代理对…

定长内存池设计ConcurrentMemoryPool

原理 还回来的内存用链表串联起来&#xff0c;称为自由链表 内存块自身进行链接&#xff0c;前四个字节存下一个的地址 结构 template<class T> class ObjectPool { public:T* New(){} private:char* _memory nullptr; //方便切割void* _freeList nullptr; };第一步…

Axure RP移动端高保真CRM办公客户管理系统原型模板及元件库

Axure RP移动端高保真CRM办公客户管理系统原型模板及元件库&#xff0c;一套典型的移动端办公工具型APP Axure RP原型模板&#xff0c;可根据实际的产品需求进行扩展&#xff0c;也可以作为移动端原型设计的参考案例。为提升本作品参考价值&#xff0c;在模板设计过程中尽量追求…

uniapp 自定义手机顶部状态栏不生效问题

想要的效果想淘宝一样&#xff0c;底色覆盖到手机顶部&#xff0c;找了两天都没找到原因&#xff0c;过程很艰苦&#xff0c;直接上结果吧 项目是后来接手的&#xff0c;最终原因出在这&#xff0c; "immersed" : false>设置为 true 就可以了&#xff0c;沉浸式样…

RunnerGo的相比较JMeter优势,能不能替代?

目前在性能测试领域市场jmeter占有率是非常高的&#xff0c;主要原因是相对比其他性能测试工具使用更简单&#xff08;开源、易扩展&#xff09;&#xff0c;功能更强大&#xff08;满足多种协议的接口&#xff09;&#xff0c;但是随着研发协同的升级&#xff0c;平台化的性能…

Java智慧工地APP源码带AI识别

智慧工地为建筑全生命周期赋能&#xff0c;用创新的可视化与智能化方法&#xff0c;降低成本&#xff0c;创造价值。 一、智慧工地APP概述 智慧工地”立足于互联网&#xff0c;采用云计算&#xff0c;大数据和物联网等技术手段&#xff0c;针对当前建筑行业的特点&#xff0c;…

【Sklearn】基于朴素贝叶斯算法的数据分类预测(Excel可直接替换数据)

【Sklearn】基于朴素贝叶斯算法的数据分类预测&#xff08;Excel可直接替换数据&#xff09; 1.模型原理2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 模型原理&#xff1a; 朴素贝叶斯分类是基于贝叶斯定理的一种分类方法。它假设特征之间相互…

海康威视摄像头二次开发_云台控制_视频画面实时预览(基于Qt实现)

一、项目背景 需求:需要在公司的产品里集成海康威视摄像头的SDK,用于控制海康威视的摄像头。 拍照抓图、视频录制、云台控制、视频实时预览等等功能。 开发环境: windows-X64(系统) + Qt5.12.6(Qt版本) + MSVC2017_X64(使用的编译器) 海康威视提供了设备网络SDK,设备网…

爬虫练手项目——获取龙族小说全文

网站信息 目标网站信息如下&#xff1a;包含了龙族1-5全部内容 代码 import requests from bs4 import BeautifulSoup import os import timeheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Sa…

NAS搭建指南一——服务器的选择与搭建

一、服务器的选择 有自己的本地的公网 IP 的请跳过此篇文章按需求选择一个云服务器&#xff0c;目的就是为了进行 frp 的搭建&#xff0c;完成内网穿透我选择的是腾讯云服务器&#xff0c;我的配置如下&#xff0c;仅供参考&#xff1a; 4. 腾讯云服务器官网地址 二、服务器…

工具推荐:Wireshark网络协议分析工具(对比tcpdump)

文章首发地址 Wireshark是一款开源的网络协议分析工具&#xff0c;可以捕获网络数据包并对其进行详细的分析和解释。下面是Wireshark的详细介绍&#xff1a; Wireshark 工作原理 Wireshark通过捕获网络接口上的数据包&#xff0c;将其转换为可读的格式&#xff0c;并在界面…

React入门 jsx学习笔记

一、JSX介绍 概念&#xff1a;JSX是 JavaScript XML&#xff08;HTML&#xff09;的缩写&#xff0c;表示在 JS 代码中书写 HTML 结构 作用&#xff1a;在React中创建HTML结构&#xff08;页面UI结构&#xff09; 优势&#xff1a; 采用类似于HTML的语法&#xff0c;降低学…

java中右移>>和无符号右移>>>的区别

public static void main(String[] args) {byte[] dest new byte[2];dest[0] 0x15; //0001 0101dest[1] (byte) 0xfb;//1111 1011System.out.println((dest[0] >> 4) & 0xff);//右移 应该是0000 0001 十进制结果显示1 结果也是1&#xff0c;正确System.out.printl…

【Linux命令详解 | chown命令】 chown命令用于修改文件或目录的所有者,常与chmod一起使用

文章标题 简介一&#xff0c;参数列表二&#xff0c;使用介绍1. 更改文件的所有者2. 递归地更改目录及其内容的所有者3. 使用--from参数改变所有者4. 使用--reference参数参考其他文件或目录的所有者5. 获取帮助信息和版本信息 总结 简介 在Linux系统中&#xff0c;chown命令被…