软件测试的理论基础1

news2024/10/6 6:05:32

软件的生命周期

可行性研究和计划(立项)
需求分析
概要设计(测试计划)
详细设计(测试方案)
实现(开发阶段;包含单元测试)
组装测试(集成测试)
确认测试(系统测试,验收回归测试)
使用和维护(上线使用及日常更新维护)

什么是软件测试

定义:在规定条件下对程序进行操作,从而发现问题,对软件质量进行评估的过程

软件测试的目的:

以最少的人力、物力、时间找到软件中的缺陷并修改,从而回避商业风险。

软件测试的定义:

使用人工和自动手段来运行程序,目的在于检验是否满足了需求

软件测试的原则

  1. 所有测试追溯到用户需求
  2. 把尽早和不断的测试,最为座右铭
  3. 测试工作要由专业人员来执行
  4. 80%的错误出现在20%的模块中
  5. 设计测试用例(测什么?怎么测?)时,要考虑各种情况
  6. 一定要写缺陷报告
  7. 制定严格的测试计划
  8. 完全测试是不可能的,测试需要终止
  9. 注意回归测试(修改了旧代码后,要确认没有引入新的问题)
  10. 妥善保存一切测试文档

软件质量模型(iso9126)

1、 功能性
2、 可靠性(1、尽量不出问题;2、出了问题不能影响主体功能;3、如果影响了主体功能,要能尽快修复)
3、 易用性(用户体验要好)
4、 效率
5、 可维持性(更新)
6、 可移植性(跨越不同系统平台)

软件质量模型保证(SQA)

目的:使软件制作的过程对于领导层是可见的。
定义:它是一套计划和方法来向领导层保证。
五个基本目标:
1、 保证有计划地进行,
2、 保证遵循了步骤和需求
3、 及时通知给对应人员
4、 高管可以接触到项目内部
5、 软件质量需要测试工作来保证

qc和qa

qc:检验产品的质量
qa:审计过程的质量
工作关系:qc进行质量控制,qa是确保qc按照步骤执行。

软件测试流程

1、 需求分析
2、 编写测试用例(测什么 怎么测)
3、 评审测试用例
4、 搭建测试环境
5、 等待程序的开发包
6、 部署测试包
7、 冒烟测试(测试主体功能是否有问题)
8、 执行测试用例
9、 Bug跟踪处理(回归测试)
10、N轮之后符合要求
11、 测试结束

软件测试工作流程图

立项阶段
需求阶段
设计阶段
编码&单元测试阶段
集成测试阶段
系统测试阶段
验收测试阶段
结项总结阶段

2、软件测试的分类

软件开发阶段划分:

  1. 单元测试
    测试阶段:编码后或者编码前;
    测试对象:最小模块;
    测试方法:白盒测试;
    测试内容:模块接口测试,局部数据结构测试,路径测试,错误处理测试,边界测试;
  2. 集成测试
    测试阶段:单元测试以后;
    测试对象:模块间的接口;
    测试方法:黑盒测试+白盒测试;
    测试内容:模块之间的数据传输,模块之间的冲突,模块组装功能正确性,全局数据结构;
  3. 系统测试
    测试阶段:集成测试以后;
    测试对象:整个系统(软、硬件);
    测试方法:黑盒测试;
    测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
  4. 回归测试
    回归测试指修复bug后,重新进行测试以确认修改后没有引入新的错误;
  5. 冒烟测试
    一般在开发人员开发完毕后给测试人员进行测试时,测试人员会先进性冒烟测试;
    冒烟测试就是给产品加电,测试能否正常启动;
    验证基本的流程是否能正常启动,不用关心细节。
  6. 验收测试
    最后一个阶段的测试,确保产品准备就绪。
    测试阶段:系统测试之后;
    测试对象:整个系统;
    测试方法:黑盒测试;
    测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等

按测试实施分

  1. α测试
    α测试是由用户在开发环境下进行的测试;(开发和测试人员不能参加)
  2. β测试
    β测试是由软件的最终用户在一个或者多个场所进行测试;

α测试和β测试的区别:

  1. 测试场所不同:Alpha测试指把用户请到开发方的场地来测试,β测试时一个或多个用户在不同场所进行测试;
  2. alpha测试的环境是受开发方控制的,用户数量较少,时间比较集中;beta测试的环境是不受开发方控制的;alpha测试先于beta测试;
  3. 第三方测试
    介于开发方和用户之间的第三方的测试;

按是否运行分

  1. 静态测试
    指不运行被测程序本身,通过分析源程序的语法,结构,过程等检查程序的正确性;
    代码静态分析和文档测试都属于静态测试;
  2. 动态测试
    指通过运行程序,检查运行结果和预期结果的差异,并分析运行效率,正确性等;

按是否手工分

  1. 手工测试
    由手工一个一个去输入测试用例,然后观察结果;
    优点:思维发散;
    缺点:执行效率慢,量大易错;
  2. 自动化测试
    简单的说自动化测试就是以人为驱动的测试行为转化为机器执行的一个过程;
    通常所说的自动化测试是指功能测试自动化;

自动化测试的步骤:

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

按是否查看代码分

  1. 黑盒测试
    黑盒测试也叫功能测试,把被测试软件当成一个黑盒子,不关心内部结构是什么,只关心软件的输入与输出数据;
  2. 白盒测试
    白盒测试是基于代码的测试,需要打开盒子,去研究里面的代码和执行结果;
  3. 灰盒测试
    灰盒测试是介于白盒测试和黑盒测试之间的一种测试,多用于集成测试阶段,不仅关心输入输出的正确性、同时也要关注程序内部的情况;

其他测试

随机测试

针对软件中的重要功能进行复测

探索性测试

一遍了解和学习项目,一遍测试项目

测试过程模型

V模型在这里插入图片描述

在这里插入图片描述
优点:
既包含了底层测试,又包含了高层测试
每个步骤都是文档驱动的
缺点:
当需求变更时将会导致阶段反复,返工量非常大,模型灵活性比较低

W 模型

在这里插入图片描述
优点:
1.测试伴随软件的整个生命周期,在需求分析结束后就可进行需求分析测试。
2.测试与开发是并行的便于发现问题(可同时进行,提高效率)
缺点:
1.对于有些项目,开发过程中根本没有文档产生,所以W模型无法使用。
2.对于需求和设计的测试技术要求很高,实践起来很困难。

测试用例

测试用例是为了实施测试而向被测试的系统提供的一组集合
集合包括(八大要素):用例编号,用例标题,测试项目,用例级别,预置条件,测试输入,操作步骤,预期结果等;

测试用例的设计方法?

等价类:依照需求将输入划分为若干个等价类;

超市买水果
有效等价类:苹果、桃子、梨
无效等价类:青菜、米、饮料,…

边界值:对输入输出的边界值进行测试;

  1. 输入框长度为1-11,取边界值为:0、1、11、12
  2. 运动员的参赛项目为1-3项,取边界值为:0项、1项、3项、4项
  3. 查询面页面有999行,每50行为一页,取边界值为:输出0行、1行、
    50行、51行、999行

因果图:表明程序输入条件和输出动作之间的相互关系;(对于复杂的输入和输出关系,会耗费大量的时间)

因果图设计测试用例的步骤:

  1. 分析所有可能的输入与输出;
  2. 找出输入与输出之间的对应关系;
  3. 画出因果图;
  4. 把因果图转换成判定表;
  5. 把判定表对应到每一个测试用例;

因果图中的对应关系:
恒等:如果输入为真,那么输出就为真。
在这里插入图片描述

与:如果两个输入都为真,那么输出就是真。
在这里插入图片描述

或:如果输入中有一个为真,那么输出就为真。
在这里插入图片描述

非:只有输入为假,输出才为真。
在这里插入图片描述

案例一: 假设业务单据的处理规则为:“淘宝618活动,提单已提交,订单合计 金额大于300元或有红包,则进优惠”。

  1. 对于这条业务规则,首先通过分析所有可能的输入和可能的输出, 可以得到如下结果: ● 输入:订单已提交、金额大于300、有红包。 ● 输出:优惠、不优惠。

  2. 然后,进行第二步,找出输入与输出之间的对应关系。通过分析, 可以看出有以下的对应关系。 (1)订单已提交,订单金额大于300元,则优惠。(2)订单已提交,订单金额小于等于300元,无红包,不优惠
    (3)订单已提交,有红包,则优惠。 (4)订单已提交,订单金额大于300元,有红包,则优惠。 (5)订单未提交,不优惠。

  3. 为了方便画出因果图和判定表,需要对所有输入和输出编号,现在 编号如下。 1:订单已提交。 2:订单金额大于300元。 3:有红包 21:优惠 22:不优惠

  4. 画因果图在这里插入图片描述

  5. 画判定表:有3个条件,输出有2个取值,所以表的列数为2x2x2=8在这里插入图片描述

  6. 最终的测试用例 1,2,3,4,5(包含6,7,8)。

正交排列法:

场景设计法: 想象需求的场景来设计测试用例;

错误猜测法:根据直觉找出有可能出现的错误,有针对性的设计测试用例

软件测试的生命周期?

需求分析 —> 测试计划 — 测试设计、测试开发 — 测试执行 — 测试评估

bug定义

软件或者程序中存在的各种问题

bug判定标准

软件没有达到需求说明书标明的功能
软件出现了需求说明书指明不会出现错误的地方。
软件超出了需求说明书指明的范围A
软件出现了需求说明书虽未指明,但应该达到的目标
软件难以使用,效率低下

bug产生的根源

需求变更
交流不充分
软件的复杂性
进度压力

缺陷(bug)分析需要注意的点

哪个模块问题最多
哪个测试工程师测试的缺陷最多
各类缺陷数量占比
开发是否可以及时修复缺陷
开发人员一次修复缺陷占比
软件是否可以正常发布

bug的级别

  1. Blocker(崩溃)
    造成系统崩溃、死机、死循环、导致数据库丢失、与数据库连接错误等问题
    (一单出现,立即中止当前版本的测试)
  2. Critical(严重)
    系统主要功能丧失,数据库保存调用错误,用户数据丢失等但是不影响其他功
    能的测试。
  3. Major(一般)功能没有完全实现但是不影响使用,如操作时间长、查询时间长等
  4. Minor(次要)
    界面、性能缺陷,建议性问题

bug的生命周期

从open到closed
在这里插入图片描述
New:新发现的bug,未经评审决定是否要指派给开发人员进行修改。
Open:确认是bug,并且认为需要修改,指派给相关开发人员。
Rejected:如果认为不是bug,则拒绝修改。
Delay:如果认为暂时不需要修改或者暂时不能修改,则延迟修改。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十六)Stable Diffusion教程:出图流程化

今天说一个流程化出图的案例,适用很多方面。 1、得到线稿,自己画或者图生图加线稿lora出线稿;如果想sd出图调整参数不那么频繁细致,则线稿的素描关系、层次、精深要表现出来,表现清楚。 2、文生图,seed随机…

kafka的 ack 应答机制

目录 一 ack 应答机制 二 ISR 集合 一 ack 应答机制 kafka 为用户提供了三种应答级别: all,leader,0 acks :0 这一操作提供了一个最低的延迟,partition的leader接收到消息还没有写入磁盘就已经返回ack&#x…

PyCharm 远程debug 快速上手

一、方法 1. 配置远程解释器(简单高效,强烈推荐!!!) 要求: 通过 SSH 从本地机器访问远程服务器,使用任何预定义的端口从远程服务器访问本地机器,最好关掉vpn等网络代理服务。 常见…

中通快递一键查询,轻松掌握物流信息

在如今的快速发展的电商时代,快递已成为人们生活中不可或缺的一部分。随着快递业务的繁荣,快递公司也纷纷推出了各种查询方式,方便顾客随时掌握自己包裹的物流信息。在这其中,中通快递无疑是许多人选择的首选。下面,我…

合并两个升序链表,哨兵位的理解

开始时也要判断是否有一个链表本来就是空,如果是,直接返回另外一个链表 代码: struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){if(list1NULL){return list2;}if(list2NULL){return list1;} struct ListN…

仿互站资源商城平台系统源码多款应用模版

首先安装好环境,推荐用Linux宝塔 请示:安装前请先别开防火墙,和跨站篡改 第1步上传程序到服务器, 第2步修改数据库文件,config/config.php 第3步,导入数据,根目录的数据库文件夹里面 数据.s…

SpringCloud Alibaba-Seata

接上文 SpringCloud Alibaba - Sentinel 1.简介(Seata与分布式事务) Seata官方网址https://seata.io/zh-cn/docs/overview/what-is-seata.html 2.环境搭建 首先对之前的图书借阅系统进行升级: 编写对应的服务接口。 (1&#…

操作系统:体系结构

1.内核的划分 1.术语解释 时钟管理:利用时钟断实现计时功能。原语是一种特殊的程序,具有原子性。也就是说,这段程序的运行必须一气呵成,不可被“中断”Ubuntu、Centos的开发团队,其主要工作是实现非内核功能,而内核都是用了Linux内核。 内核…

el-table-column默认选中一个复选框和只能单选事件

表格代码 <el-table ref"contractTable" v-loading"loading" :data"contractList" selection-change"contractSelectionChange" style"margin-top: 10%;"><el-table-column type"selection" width"…

【Linux】系统编程线程互斥与同步(C++)

目录 【1】线程互斥 【1.1】进程线程间的互斥相关背景概念 【1.2】互斥量mutex 【1.3】互斥量实现原理探究 【1.4】RAII的加锁风格 【2】可重入VS线程安全 【2.1】概念 【2.2】常见的线程不安全的情况 【2.3】常见的线程安全的情况 【2.4】常见不可重入的情况 【2.5…

【golang】深入理解GMP调度模型

Goroutine Go中&#xff0c;协程被称为goroutine&#xff0c;它非常轻量&#xff0c;一个goroutine只占几KB&#xff0c;并且这几KB就足够goroutine运行完&#xff0c;这就能在有限的内存空间内支持大量goroutine&#xff0c;支持了更多的并发&#xff0c;虽然一个goroutine的…

基于YOLOv8模型的条形码二维码检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型的条形码二维码检测系统可用于日常生活中检测与定位条形码与二维码目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测…

Ubuntu 12.04增加右键命令:在终端中打开增加打开文件

Ubuntu 12.04增加右键命令&#xff1a;在终端中打开 软件中心&#xff1a;搜索nautilus-open-terminal安装 用快捷键CtrlT打开命令行输入&#xff1a; sudo apt-get install nautilus-open-terminal 重新加载文件管理器 nautilus -q 或注销再登录即要使用

一文弄懂基于采样的路径规划-RRT系列(python代码)

基于采样的路径规划算法-RRT系列 VX关注晓理紫并回复rrt获取代码 [晓理紫] 1、基于采样的路径规划算法 基于抽样的规划方法&#xff08;或称概率方法&#xff09;通过在连续 C 空间中逐步或批量抽样&#xff0c;构建由离散 C 空间样本连接的树或图&#xff0c;从而捕捉解空间的…

飞书应用配置+蓝鲸流水线+jump server

开发者后台创建应用 配置应用基础信息&#xff0c;权限&#xff0c;安全等 管理后台 设置应用在工作台的可见范围和其他设置 Linux 常用命令&#xff1a;Linux 常用命令, ll 文件夹下文件&#xff0c;ls 文件&#xff0c;cd进入目录&#xff0c; cat 查看文件&#xff0c; v…

php反序列化+题

含义&#xff1a; php序列化&#xff08;serialize&#xff09;&#xff1a;是将变量转换为可保存或传输的字符串的过程php反序列化&#xff08;unserialize&#xff09;&#xff1a;就是在适当的时候把这个字符串再转化成原来的变量使用这两个过程结合起来&#xff0c;可以轻…

微信小程序底部安全区域高度获取

CSS 属性 safe-area-inset-bottom safe-area-inset-bottom 就是安全区的高度 padding-bottom:env(safe-area-inset-bottom); wx.getSystemInfoSync() wx.getSystemInfoSync()可以获取系统信息 let system wx.getSystemInfoSync() let bottomSafe system.screenHeight -…

React 全栈体系(十三)

第七章 redux 五、redux 异步编程 1. 理解 redux 默认是不能进行异步处理的,某些时候应用中需要在 redux 中执行异步任务(ajax, 定时器) 2. 使用异步中间件 npm install --save redux-thunk 3. 代码 - 异步 action 版 3.1 store /* src/redux/store.js */ /*** 该文件专…

全景剖析|国产芯(CPU、GPU、SSD、NAND、DRAM)虽有突破,但路还很长

这两天小编看到两个有关国产芯的消息,很有感触,本文小编分享下所思所想,如有不当之处,还望包涵,可以留言指正! 第一个消息是:近日,华为轮值主席 徐直军在2023世界计算大会上,有个国产芯的呼吁,“我们不要抱有幻想,应该坚定不移的打造可持续发展的计算产业生态。从计…

Webpack打包时Bable解决浏览器兼容问题

当我们使用js新特性语法编写代码时&#xff0c;在旧的浏览器中兼容性并不好。但是我们希望能够在旧浏览器中使用这些新特性。 使用babel可以使js新代码转换为js旧代码&#xff0c;增加浏览器的兼容性。 如果我们希望在Webpack中支持babel&#xff0c;则需要在Webpack中引入bab…