软件测试学习——笔记一

news2024/12/25 9:08:26

一、软件和软件测试

1、软件和软件分类

(1)软件:程序、数据、文档——用户手册

(2)软件的分类

  • 按层次划分:系统软件、应用软件
  • 按组织划分:开源软件(代码公开)、商业软件(代码非公开)
  • 按结构划分:单机软件(一台电脑即可运行)、分布式软件(多个电脑联网使用)

2、缺陷(bug)

(1)缺陷的由来——由Grace Hopper找出第一个bug的程序员

  • Bug
  • Defect

(2)软件缺陷的定义

  • 软件未实现产品说明书要求的功能
  • 软件出现了产品说明书指明不应该出现的功能
  • 软件实现了产品说明书中未提到的功能
  • 软件未实现产品说明书虽未明确提及 但应该实现的目标
  • 软件难以理解、不易使用、运行缓慢或者(从测试的角度看)最终用户认为不好
    (明确需求、灵活判断)

所有不满足需求或超出需求的都是缺陷
没有不存在缺陷的软件,只有迄今为止尚未发现的缺陷

3、软件测试的由来

起源于上世纪70年代中期——《测试数据选择的原理》、《软件测试的艺术》

二、软件测试的定义和目的

国内人员比例——开发:测试=8:1
国际人员比例——开发:测试=1:1

1、软件测试的定义

(1)正向思维的定义

按照产品说明书去评价产品

  • 出发点:使自己确信产品是能够正常工作的,然后去评价一个程序和系统的特性和能力,并确定它是否达到期望的结果,软件测试就是以此为目的的任何行为。

(2)反向思维的定义

怀疑一切

  • Glenford.J.Myers《软件测试的艺术》
  • 出发点:测试是为发现错误而执行一个程序或者系统的过程
  • 测试是为了证明程序有错,而不是证明程序无错误
  • 一个好的测试用例 在于它能发现 以前未发现的错误
  • 一个成功的测试 是发现了 以前未发现的错误

(3)IEEE定义的软件测试

  • 在规定条件下运行系统或构件的过程:观察和记录结果,并对系统或构件的某些方面给出评价
  • 分析软件项目的过程:检测现有状况和所需状况之间的不同,并评估软件项目的特性

(4)广义的软件测试

  • 软件测试是对软件形成过程中的所有工作产品(包括程序以及相关文档)进行的测试,而不仅仅是对程序的运行进行测试

☆软件测试术语:

  • 确认(Validation)——通过检查和提供客观证据 来证实 特定目的的功能或应用 是否已经实现
  • 验证(Verification)——通过检查和提供客观证据 来证实 指定的需求 是否满足

2、软件测试的目的

  • 以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,保证各种错误和缺陷得以修复,避免软件发布后由于潜在的软件错误和缺陷造成的隐患所带来的商业风险
  • 同时利用测试过程中得到的测试结果和测试信息,作为后续项目开发和测试过程改进的重要输入,避免在将来的项目开发和测试中重复同样的错误
  • 采用更加高效的测试管理手段,提高软件测试的效率和软件产品的质量

3、测试和调试的区别

  • 在主体、目标、方法和思路上有所不同
测试调试
主体测试人员开发人员
目标找bug将错误修改正确
方法等价类、边界值…程序和逻辑算法
思路反向思维正向思维
  • 测试是从已知的条件开始,使用预先定义的过程,并且有预知的结果;调试是从未知的条件开始,结束的过程可能不可预计
  • 测试可以计划,可以预先制定测试用例和过程,工作进度可以度量;描述调试的过程或持续时间相对比较困难
  • 测试的对象包括软件开发过程中的文档、数据以及代码 ,而调试的对象一般来说只是代码

4、软件测试的对象

三、生命周期和模型

1、软件危机和软件工程

(1)软件危机

  • 是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象

(2)软件工程

  • 基于软件危机对于计算机发展的阻碍,1968年,在联邦德国召开的会议上,北大西洋公约组织的计算机科学家讨论软件危机的问题。提出了软件工程这个名词,从此软件生产进入工程化时代。
  • 软件工程包括两方面的内容:
    • 软件开发技术:软件开发方法学、软件工具和软件工程环境
    • 软件项目管理:软件质量、项目估算、进度控制、人员组织、配置管理、项目计划
  • 引起软件危机的主要问题是软件质量问题
  • 软件工程主要解决的就是软件质量问题
  • 软件测试是软件质量管理体系中一个非常重要的手段

2、软件生命周期

(1)软件生命周期模型

在这里插入图片描述

a. 瀑布模型——最早提出的软件开发的过程模型

在这里插入图片描述

①存在的问题:
  • 强调时间顺序的严格执行。前阶段不完成,后阶段不开始
  • 将测试放在了编码之后。没有体现出测试贯穿软件生命周期的原则。可以避免需求的问 题一直延续到代码完成才暴露或者被发现
②优点
  • 为项目提供了按阶段划分的检查点
  • 当前一阶段完成后,只需要去关注后续阶段
③缺点
  • 各个阶段的划分完全固定,阶段之间产生大量文档,极大的增加了工作量
  • 线性开发,用户等到整个过程的末期才能见到开发成果,从而增加了开发风险
  • 瀑布模型不适应用户需求的变化

b. 快速原型

原型:一个模型。可以模拟操作,简单运行
典型应用和工具:Axure(制作原型)

c. 增量模型——(软件增加了新功能)

把软件分割成独立的模块,能够进行分批次的完成和交付
缺点:打破原有的软件结构和框架,可能会带来一定的风险
增量模型一般会和迭代模型一起运用

d. 迭代模型

  • 迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他元素,强调开发的深入
  • 在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程
  • 迭代过程具有以下优点:
    降低了在一个增量上的开支风险
    降低了产品无法按照既定进度进入市场的风险
    加快了整个开发工作的进度
    迭代过程这种模式使适应需求的变化会更容易些

e. 螺旋模型

螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控

  • 引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。
  • 螺旋模型更适合大型的昂贵的系统级的软件

f. 敏捷开发模型

敏捷宣言:也叫做敏捷软件开发宣言,正式宣布了对四种核心价值和十二条原则,可以指导迭代的以人为中心的软件开发方法。
在这里插入图片描述
敏捷开发——scrum

3、软件开发模型

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

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

相关文章

RSA 加密算法在C++中的实现 面向初学者(附代码)

概述 博文的一,二部分为基础知识的铺垫。分别从密码学,数论两个方面为理解RSA算法做好了准备。第三部分是对RSA加密过程的具体介绍,主要涉及其密钥对(key-pair)的获取。前三个部分与编程实践无关,可以当作…

C# | 内存池

内存池 文章目录 内存池前言什么是内存池内存池的优点内存池的缺点 实现思路示例代码结束语 前言 在上一篇文章中,我们介绍了对象池的概念和实现方式。对象池通过重复利用对象,避免了频繁地创建和销毁对象,提高了系统的性能和稳定性。 今天我…

你真的了解索引吗

当我们学习存储算法和索引算法时,他们可以深入了解如何在系统中存储和查询数据。因为存储和查询数据是许多系统的核心功能之一,例如数据库、搜索引擎等。理解这些算法可以帮助程序员更好地设计和优化系统架构,提高系统的可扩展性、可用性和性…

玩转Google开源C++单元测试框架Google Test系列(gtest)之二 - 断言

一、前言 这篇文章主要总结gtest中的所有断言相关的宏。 gtest中,断言的宏可以理解为分为两类,一类是ASSERT系列,一类是EXPECT系列。一个直观的解释就是: 1. ASSERT_* 系列的断言,当检查点失败时,退出当前…

大数据之光:Apache Spark 实用指南 大数据实战详解【上进小菜猪大数据】

上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货。 本文将深入探讨Apache Spark作为一种强大的大数据处理框架的基本概念、特点和应用。我们将详细介绍Spark的核心组件,包括Spark Core、Spark SQL、Spark Streaming和Spa…

百子作业 —— 中国邮递员问题

题目 严老师和宋老板去勘测武威市区的道路网,每一条路都需要勘测,且需要两人合作.武威市区可以近似地看成六横六纵组成的道路网,自西向东依次为学府路、民勤路、西关路、中关路、富民路、滨河路;自北向南依次为雷海路、宣武路、祁…

Redis基本数据类型及使用(2)

书接上回,这节讲讲其余的基本数据结构使用 集合,有序集合以及遍历和事务的使用 Set集合,无序不重复的成员 表现形式: key1string1string2key2string1string2 常用的基本操作: sadd key string1 [string2..]添加1…

第二十届宁波大学程序设计竞赛(同步赛)

A-0-1翻转_第二十届宁波大学程序设计竞赛(同步赛) (nowcoder.com) 思路: 我们观察发现,奇数位与偶数位的1每次操作一定时同时增加或者减少的,我们无法做到同时删除奇数位的两个1.。不满足相等则情况无解那么&#xf…

【谷粒商城之订单服务-支付】

本笔记内容为尚硅谷谷粒商城订单服务支付部分 目录 一、支付宝沙箱 沙箱环境 二、公钥、私钥、加密、加签、验签 1、公钥私钥 2、加密和数字签名 3、对称加密和非对称加密 三、内网穿透 四、整合支付 1、导入支付宝SDK依赖 2、封装工具类和PayVo 3、前端访问支付接…

python汉诺塔编程代码

汉诺塔问题是一个经典的递归问题。以下是使用Python实现汉诺塔的一个简单方法: python def hanoi(n, source, target, auxiliary): if n > 0: # 把 n-1 个盘子从 source 移动到 auxiliary hanoi(n-1, source, auxiliary, target) # 把第 n 个盘子从 source 移动到…

三十四、服务治理、实现负载均衡、

1、服务治理介绍 先来思考一个问题 通过上一章的操作,我们已经可以实现微服务之间的调用。但是我们把服务提供者的网络地址 (ip,端口)等硬编码到了代码中,这种做法存在许多问题: l 一旦服务提供者地址变化…

浪潮之巅第一章 — 帝国的余辉(ATT)(一) 阅读笔记

在这十几年间,它们代表着科技的浪潮,直到下一波浪潮的来临。 从一百年前算起,AT&T 公司、IBM 公司、苹果公司 (Apple)、英特尔 (Intel) 公司、微软 (Microsoft) 公司、思科公司 (Cisco) 公司、雅虎 (Yahoo) 公司和谷歌 (Google) 公司都先…

相见恨晚的Matlab编程小技巧(2)-代码怎么做到逻辑清晰?——巧用注释符“%“

本文将以教程的形式详细介绍Matlab中两个常用符号“%”和“%%”的作用。初学者可以通过此文掌握这两个符号的用法,为Matlab编程打下坚实的基础。 一、什么是“%”符号? 在 Matlab 中,“%” 符号是注释符号,它后面的文本被视为注释…

GEE:下载MODIS海表温度影像

作者:CSDN @ _养乐多_ 本篇博客将介绍如何使用Google Earth Engine(GEE)平台下载MODIS(Moderate Resolution Imaging Spectroradiometer)海表温度影像数据。MODIS是一种遥感传感器,用于监测地球表面的温度变化。我们将展示如何获取MODIS数据集,并选择特定感兴趣区域进行…

C#操作Redis明细内容 C#调用redis c#使用redis业务 C# Redis操作类 C#中Redis封装的类 C#和Redis客户端

谈下你对 Redis 的了解? 1)Redis是一种基于键值对的NoSQL数据库(非关系型数据库);是一个key-value存储系统 2)高性能、可靠性 Redis将数据存储在内存中,读写性能高;Redis提供了 R…

第四十天学习记录:C语言进阶:笔试题整理Ⅰ

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main() {unsigned long pulArray[] { 6,7,8,9,10 };unsigned long* pulPtr;pulPtr pulArray;*(pulPtr 3) 3;printf("%d,%d\n", *pulPtr, *(pulPtr 3));//6 12return 0; }输出&#xff1a;6&#…

哈工大软件过程与工具作业1(100以内加减法练习小软件)

softwareProcess-lab1-master 哈工大软件过程与工具作业1 100以内加减法练习小软件 地址&#xff1a;https://github.com/944613709/Addition-and-subtraction-practice-small-software 项目概述 &#xff08;1&#xff09;项目名称&#xff1a;100以内加减法练习小软件 &…

一图看懂 markupsafe 模块:为 Python 实现 XML/HTML/XHTML 标记安全字符串,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 markupsafe 模块&#xff1a;为 Python 实现 XML/HTML/XHTML 标记安全字符串&#xff0c;资料整理笔记&#xff08;大全&#xff09; &#x1f9ca;摘要&#x1f9ca;模块图…

【JAVA】Java中的类型转换

目录 1.自动类型转换&#xff08;隐式转换&#xff0c;小类型转换为大类型&#xff09; 2.强制类型转换&#xff08;显示转换&#xff0c;大类型转换为小类型&#xff09; 3.小于4字节的类型转换问题 3.1 byte<->int 3.2 char<->int 3.3 String<->int …

深入理解Java虚拟机:JVM高级特性与最佳实践-总结-4

深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践-总结-4 垃圾收集器与内存分配策略经典垃圾收集器Serial Old收集器CMS收集器Garbage First收集器 垃圾收集器与内存分配策略 经典垃圾收集器 Serial Old收集器 Serial Old是Serial收集器的老年代版本&#xff0c;它同样…