测试开发体系

软件测试

  • 通过手工或者工具对 “被测对象”进行测试
  • 验证实际结果与预期结果之间是否存在差异

软件测试作用

  • 通过测试工作可以发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心
  • 测试可以降低同类型产品开发遇到问题的风险

软件缺陷

  • 软件缺陷被测试工程师和开发工程师们称作 bug
  • 软件缺陷会导致软件不能正常运行,它的存在会在一定程度上导致软件不能满足用户的需求,甚至有可能破坏或泄漏用户的重要数据

软件测试原则

  • 测试显示缺陷的存在
  • 穷尽测试是不可能的
  • 测试尽早介入
  • 缺陷集群性(2/8原则)
  • 杀虫剂悖论
  • 测试活动依赖于测试内容
  • 没有错误是好是谬论

软件测试对象

  • 需求分析阶段:需求文档、接口文档
  • 编码实现阶段:源代码
  • 系统功能使用:软件程序

测试用例

  • 为特定的目的而设计的一组测试输入、执行步骤和预期的结果,以便测试产品否满足某个特定需求的文档

软件

  • 软件是与计算机系统操作有关的计算机程序、可能有的文档及数据。

软件生命周期

  • 定义问题
  • 软件开发
  • 软件维护

@startuml
scale 10
|定义问题|
start
:搜集需求;
:可行性研究;
:需求分析;
|软件开发|
:概要设计;
:详细设计;
:编码;
:测试;
|软件维护|
:纠错性维护;
:改进性维护;
:报废;
stop
@enduml

软件开发流程

  • 为了使软件开发的工作系统化并且可控制;
  • 需要采用合适的软件开发模型和开发过程管理所有的活动。

@startuml
scale 10
title 软件开发模型
:瀑布模型;
:敏捷开发模型;
:DevOps 模型;
@enduml

瀑布模型

  • 软件开发的各项活动严格按照线性方式进行。
  • 当前活动接受上一项活动的工作结果。
  • 当前活动的工作结果需要进行验证。

@startuml
scale 4
:制定计划;
:需求分析;
:软件设计;
:程序编码;
:软件测试;
:运行维护;
@enduml

瀑布模型优缺点

  • 优点:
    • 开发的各个阶段比较清晰。
    • 强调早期计划及需求调查。
    • 适合需求稳定的产品开发。
  • 缺点:
    • 早期的错误可能要等到开发后期的阶段才能发现。
    • 由于开发模型是线性的,增加了开发的风险。

@startuml
scale 4
:制定计划;
:需求分析;
:软件设计;
:程序编码;
:软件测试;
:运行维护;
@enduml

敏捷开发模型

  • 适用于需求频繁变化和需要快速开发的场景。
    • XP
    • SCRUMXP

极限编程

SCRUM

敏捷模型总结

  • 增量迭代
  • 小步快跑

DevOps

evOps 生命周期

  • 持续开发
  • 持续测试
  • 持续集成
  • 持续部署
  • 持续监控

DevOps 对发布的影响

  • 减少变更范围
  • 加强发布协调
  • 自动化

CI/CD

  • 持续集成(Continuous Integration,缩写为 CI):
    • 一种软件开发实践。
    • 团队开发成员每天可能会发生多次集成。
    • 每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证。
    • 根据测试结果确定新代码和原有代码能否正确地集成在一起。
  • 持续交付(Continuous Delivery,缩写为 CD)
    • 是一种软件工程手法。
    • 让软件产品的产出过程在一个短周期内完成。
    • 保证软件可以稳定、持续的保持在随时可以发布的状况。
    • 目标:
      • 让软件的构建、测试与发布变得更快以及更频繁。
      • 减少软件开发的成本与时间,减少风险。

CD 与 DevOps 的关系

  • DevOps 的范围更广:
    • DevOps 是软件交付过程所涉及的多个团队之间的合作。
    • 并且将软件交付的过程自动化。
  • 持续交付是一种自动化交付的手段:
    • 关注点在于将不同的过程集中起来。
    • 并且更快、更频繁地执行这些过程。
  • 总结:DevOps 可以是持续交付下的一个产物,持续交付的成果直接汇入 DevOps 模型。

软件测试分类

@startmindmap
scale 10
* 软件测试分类
** 按开发阶段分类
*** 单元测试
*** 集成测试
*** 系统测试
**** 功能测试
**** 兼容性测试
**** 性能测试
**** 安全测试
*** 验收测试
**** α 测试
**** β 测试
** 按是否查看代码
*** 白盒测试
*** 黑盒测试
*** 灰盒测试
left side
** 按测试执行方式
*** 静态测试
*** 动态测试
** 按是否手工执行划分
*** 手工测试
*** 自动化测试
** 其他分类
*** 冒烟测试
*** 回归测试
*** 随机测试
*** 探索性测试
@endmindmap

黑盒测试

  • 黑盒测试又称数据驱动测试。
  • 完全不考虑程序内部结构和内部特性。
  • 注重于测试软件的功能需求。
  • 只关心软件的输入数据和输出数据。

白盒测试

  • 白盒测试研究产品内部的源代码和程序结构。
  • 单元测试就是白盒测试的一种。

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

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

相关文章

快速渲染效果图:设计师的高效工作流揭秘

渲染技能是每个建模设计师需求的一个重要技能,尽管在许多设计公司里,建模和渲染往往是分开由各自的专家来完成。不过,一个全能型的建模师还是应该精通渲染技术。对于那些接外包项目来制作渲染效果图的设计师来说,掌握如何提速渲染…

神经网络基本原理

神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向–深度学习的基础。 神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。人脑中的神经网络是一个非常复杂的组织。成人的大脑中估计有1000亿个神经元之多。 1 介绍 下面是一个包含三个层…

使用webstorm调试vue 2 项目

学习目标: 使用webstorm调试vue 2 项目 笔者环境: npm 6.14.12 webstorm 2023.1 vue 2 学习内容: 例如: 正常启动npm 项目 配置javaScruot dubug 配置你的项目地址就好 使用dubug运行你配置的调式页 问题 如果进入了js页无…

【推荐算法】userid是否建模

看到一个din的源码,将userid也构建了emb table。 于是调研了一下。即推荐算法需要建模userid吗? 参考: 推荐算法user_id在train和serving时应该怎么用? - 知乎 深度学习推荐算法中user-id和item-id是否需要放入模型中作为特征进…

使用pandas将excel转成json格式

1.Excel数据 2.我们想要的JSON格式 {"0": {"raw_data1": "Sam","raw_data2": "Wong","raw_data3": "Good","layer": "12v1"},"1": {"raw_data1": "Lucy…

算法效率的度量-时间空间复杂度

常对幂指阶 1.时间复杂度 事前预估 算法 时间开销 T(n) 与 问题规模 n 的关系( T 表示 “ time ”) 一般默认问题规模为n。 1.单循环 2.嵌套两层循环都为n 3.单层循环指数递增型 4.搜索型 链接 :第七章查找算法!&#xff01…

【力扣】整数反转,判断是否溢出的数学解法

整数反转原题地址 方法一:数学 反转整数 如何反转一个整数呢?考虑整数操作的3个技巧: xmod10可以取出x的最低位,如x123,xmod103。x/10可以去掉x的最低位,如x123,x/10,x12。xx*10…

IntelliJ IDE 插件开发 | (六)内部模式的使用

系列文章 IntelliJ IDE 插件开发 |(一)快速入门IntelliJ IDE 插件开发 |(二)UI 界面与数据持久化IntelliJ IDE 插件开发 |(三)消息通知与事件监听IntelliJ IDE 插件开发 |(四)来查收…

Java10-BigDecimal使用(位数、舍入、计算、比较、绝对值)

1、保留位数与舍入 1、BigDecimal.setScale(newScale, roundingMode)方法用于格式化小数点 newScale表示保留位数,roundingMode表示舍入模式,舍入模式一共有8种,其值分别从0到7。 ROUND_UP:0; // 向上舍入,远…

PCB正片和负片的区别与使用

PCB正片和负片的区别与使用 简单解释详细解释 简单解释 简单的来说,正片在电路板的表面(指定是顶层和底层)上保留我们绘图工具所画的线(图案)。 而负片则是将我们绘制的线(图案)进行腐蚀掉&am…

leetcode1079:游戏玩法分析——求留存率

求留存率 题目描述题解 题目描述 表:Activity --------------------- | Column Name | Type | --------------------- | player_id | int | | device_id | int | | event_date | date | | games_played | int | --------------------- (player_id&…

mysql如何备份某些库的某些表

MySQL备份数据库 mysql如何备份某些库的某些表 要备份某个库里的部分表,该如何操作? 例如:要备份db01库里的20张表,表很多又不想备份整个库 或者要备份多个库里的不同表,又如何操作? 例如:备份…

JIT逆优化引发的Java服务瞬时抖动 问题排查解决方案

目录 一、背景 二、前期排查(失败) 三、使用神器JFR 四、学习JIT&思考解决方案 五、最终的解决方案 五、总结 一、背景 我们有一个QPS较高、机器数较多的Java服务;该服务的TP9999一般为几十ms,但偶尔会突然飙升至数秒&a…

OnlyOffice:释放无限创意,打造高效协作新体验

Onlyoffice 💖前言一、💫开发者版本介绍二、💫开发者版本特点三、💫最新版重磅来袭,8.0版本介绍1.显示协作者头像2.插件 UI 界面更新 四、✨Windows部署ONLYOFFICE1.安装Erlang2.安装RabbitMQ3.安装Redis4.安装Postgre…

ts总结4、TypeScript 的数组类型

一、TS中的数组类型:所有成员的类型必须相同,但是数据量可以是无限量的,当然也可以是零成员 二、写法 数组的第一种写法: // 第一种:在数组成员的类型后面,加上一对方括号。let arr:number = [1,2,3];// 上例解析:数组arr的类型是number[],其中number表示数组成员类…

Spring boot 集成redis

一、使用spring bootspring-boot-starter-data-redis 导入maven包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> spring boot配置文件 spring.re…

PyTorch自动微分模块torch.autograd的详细介绍

torch.autograd 是 PyTorch 深度学习框架中的一个核心模块&#xff0c;它实现了自动微分&#xff08;Automatic Differentiation&#xff09;的功能。在深度学习中&#xff0c;自动微分对于有效地计算和更新模型参数至关重要&#xff0c;特别是在反向传播算法中用于计算损失函数…

CSS:两列布局

两列布局是指一列宽度固定&#xff0c;另一列自适应。效果如下&#xff1a; HTML: <div class"container clearfix"><div class"left"></div><div class"right"></div> </div>公共 CSS&#xff1a; .con…

Elasticsearch:BM25 及 使用 Elasticsearch 和 LangChain 的自查询检索器

本工作簿演示了 Elasticsearch 的自查询检索器将非结构化查询转换为结构化查询的示例&#xff0c;我们将其用于 BM25 示例。 在这个例子中&#xff1a; 我们将摄取 LangChain 之外的电影样本数据集自定义 ElasticsearchStore 中的检索策略以仅使用 BM25使用自查询检索将问题转…

【Spring Boot 3】【JPA】嵌入式对象

【Spring Boot 3】【JPA】嵌入式对象 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或…