手把手教你从开发进度划分测试

一.单元测试(Unit Testing)

单元测试:软件单元测试的对象是可独立编译或汇编的程序模块。测试的对象是软件测试中的最小单位:模块。

测试阶段:编码后或者编码前(TDD:测试驱动开发)注:一般编码后测试

测试对象:最小模块

测试人员:测试工程师或开发人员

测试依据:代码和注释+详细文档

测试方法:白盒测试

测试内容:模块接口测试、局部数据结构测试、独立执行路径测试、错误处理路径测试、边界条件测试

注释:

1、模块测试主要基于白盒测试,也可能会用到灰盒测试

2、TDD:测试人员先编写测试用例,开发人员根据测试用例写程序

1.1单元测试目的

a)单元测试用于验证详细设计文档(LLD)

b)验证详细设计文档中规定的软件单元的功能、性能、接口和其它设计约束等要求,逐项进行测试

1.2单元测试工具

JavaScript单元测试工具 JsTestDriver和Venus和Buster.JS

C单元测试工具 greatest

C++单元测试工具 QTRunner和ECUT

单元测试维护工具 Unitils

Qt单元测试工具 QTestlib

存储过程单元测试工具 SQLUnit

数据库单元测试工具 DbUnit

NoSQL的单元测试工具 NoSQLUnit

单元测试框架

 Arquillian、The Grinder、

JUnit 和TestNG是一个 Java 语言的单元测试框架;

 AndroidJUnit4 是Android的单元测试框架;

C++ 单元测试框架 cipra

Python单元测试框架 PyUnit、unittest、pytest

Python 模拟测试框架 CaptureMock

gtest是一个跨平台的(Liunx、Mac OS X、Windows、Cygwin、Windows CE and Symbian)C++单元测试框架,由google公司发布。

二.集成测试(Integration Testing)

集成测试:测试对象

a)任何一个软件单元集成到计算机软件系统的组装过程

b)任意一个组装得到的软件系统

测试阶段:一般是单元测试之后

测试对象:模块间的接口

测试人员:测试工程师或开发工程师

测试依据:单元测试的文档+软件概要设计文档

测试方法:黑盒测试与白盒测试(灰盒测试)

测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能的正确性、全局数据结构、单模块

注释:

集成测试是在模块之间进行测试(至少两个)。

2.1集成测试目的

a)集成测试用于软件概要设计文件

b)检验软件单元之间、软件单元和已集成的软件系统之间的接口关系,并验证已集成软件系统是否符合设计要求

集成测试的内容

集成测试内容包括模块之间接口以及集成后的功能。主要使用黑盒测试方法测试继承的功能,并对以前的集成进行回归测试。集成测试的内容包括以下方面: 
(1)、将各个具有相互调用关系的模块组装起来时,检查相应模块接口的数据是否会丢失。 
(2)、判断各个子功能组合起来是否能够达到预期要求的父功能。 
(3)、检查一个模块的功能是否对其他模块的功能产生不良影响。 
(4)、检查全局数据结构是否正确,以及在完成模块功能的过程中是否会被异常修改。 
(5)、单个模块的误差累计起来,是否会放大到不可接受的程度。

集成测试过程

1.计划阶段: 依据需求规格说明书、概要设计文档和开发计划,拟定软件集成测试计划;

2设计阶段:依据被测对象的结构、待集成模块、接口、集成测试策略、测试工具等进行分析,拟定集成测试设计方案;

3实现阶段:主要进行集成测试用例设计和集成测试代码设计;

4执行阶段: 执行测试,生成测试报告。

集成测试原则

1.所有的公共接口都要被测试到;

2.关键模块必须进行充分的测试;

3.集成测试应该按一定的层次进行;

4.集成测试的策略应该综合考虑质量、进度、成本;

5.当测试计划中的结束标准满足时,集成测试结束;

6.集成测试根据集成测试的计划和方案进行,防止测试的随意性;

7.项目管理者保证测试用例经过审查;

8.测试的执行结果应该如实的被记录。

集成测试技术和步骤

技术: 

   以黑盒测试技术为主、白盒测试技术为辅(灰盒测试技术)

步骤:

   与集成测试策略相关

集成测试策略

基于功能分解的集成测试:非渐增式集成、渐增式集成、瞬时集成。

瞬时集成测试策略又称大爆炸测试、一次性集成。首先对每个模块分别进行模块测试,然后将所有模块集成起来在一起进行测试,最终得到要求的软件系统。

集成测试工具

Jenkins持续集成自动化构建发布工具

开源的 Restful Api 集成测试工具 Hitchhiker

集成测试的三个级别

由于集成的力度不同,一般可以把集成测试划分为三个级别:

1、模块内集成测试。

2、子系统内集成测试。

3、子系统间集成测试。

三.系统测试(System Testing)

系统测试:系统测试的测试对象是完整的、集成的计算机系统,重点是新开发的软件配置项的集合。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段,包括回归测试和冒烟测试。

测试阶段:集成测试阶段之后

测试对象:整个系统(软件、硬件)

测试人员:测试工程师

测试依据:需求规格说明文档

测试方法:黑盒测试

测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等

注释:

1、系统测试是整体来看,不需要单独看一个模块

2、系统测试顺序:冒烟测试、系统测试、回归测试

3.1系统测试目的

用于验证需求规格说明文档

系统测试目标

1、 确保系统测试的活动是按计划进行的;

2、 验证软件产品是否与系统需求用例不相符合或与之矛盾;

3、 建立完善的系统测试缺陷记录跟踪库;

4、 确保软件系统测试活动及其结果及时通知相关小组和个人。

系统测试主要分为以下几种:

1.恢复测试

2.安全测试

3.强度测试

4.性能测试

系统测试原则

1、测试机构要独立;

2、要精心设计测试计划,包括负载测试、压力测试、用户界面测试、可用性测试、逆向测试、安装测试、验收测试;

3、要进行回归测试;

4、测试要遵从经济性原则。

系统测试的方法

功能测试:功能测试属于黑盒测试,是系统测试中最基本的测试。功能测试主要根据产品的需求规格说明和测试需求列表,验证产品是否符合需求规格说明。

协议一致性测试:主要用于分布式系统。在分布式系统中,很多功能的实现是通过多台计算机相互协作来完成的,这要求计算机之间能相互交换信息,所以需要制定一些规则(协议)。对协议进行测试,通常包括:协议一致性测试、协议性能测试、协议互操作性测试、协议健壮性测试。

性能测试:主要用于实时系统和嵌入式系统,性能测试是指测试软件在集成系统中的运行性能,目标是量度系统的性能和预先定义的目标有多大差距。一种典型的性能测试是压力测试,当系统同时接收极大数量的用户和用户请求时,需要测量系统的应对能力。性能测试要有工具的支持,在某种情况下,测试人员必须自己开发专门的接口工具。

压力测试:又称强度测试,是在各种超负荷的情况下观察系统的运行情况的测试。

容量测试:在系统正常运行的范围内测试并确定系统能够处理的数据容量。容量测试是面向数据的,主要目的就是检测系统可以处理目标内确定的数据容量。

安全性测试:安全性测试就是要验证系统的保护机制是否抵御入侵者的攻击。保护测试是安全性测试中一种常见的测试,主要用于测试系统的信息保护机制。评价安全机制的性能与安全功能本身一样重要,其中安全性的性能主要包括:有效性、生存性、精确性、反应时间、吞吐量。

失效恢复测试:验证系统从软件或者硬件失效中恢复的能力。失效恢复测试采用各种人为干预方式使软件出错,造成人为的系统失效,进而检测系统的恢复能力。如果恢复需要人为干预,则应考虑平均修复时间是否在限定的范围内。

备份测试:备份测试是失效恢复测试的补充,目的是验证系统在软件或者硬件失效的实践中备份其数据的能力。

GUI测试:GUI测试与用户友好性测试和可操作性测试有重复,但GUI测试更关注对图形界面的测试。GUI测试分为两个部分,一方面是界面实现与界面设计的情况要符合;另一方面是要确认界面能够正确处理事件。

                 GUI测试设计测试用例一般要从以下4方面考虑:

                 (1)划分界面元素,并根据界面的复杂性进行分层。通常把界面划分为三个层次,第一层是界面原子层;第二层是界面组合元素层;第三层是一个完整的窗口。

                 (2)在不同的界面层次确定不同的测试策略。

                 (3)进行测试数据分析,提取测试用例。

                 (4)使用自动化测试工具进行脚本化工作。

健壮性测试:又称容错测试,用于测试系统在出故障时,是否能够自动恢复或者忽略故障继续运行。健壮性测试的一般方法是软件故障插入测试,在软件故障插入测试中,需要关注三个方面:目标系统、故障类型和插入故障的方法。

兼容性测试:检验被测的应用系统对其他系统的兼容性。

易用性测试:与可操作性类似。检测用户在理解和使用系统方面是否方便。易用性测试是面向用户的系统测试,包括对被测系统的系统功能、系统发布、帮助文本和过程等的测试。最好在开发阶段就开始进行。

安装测试验证成功安装系统的能力。

文档测试:主要是针对系统提交给用户的文档进行验证。文档测试的目标是验证用户文档的正确性并保证操作手册的过程能正常工作。

在线帮助测试:用于检验系统的实时在线帮助的可操作性和准确性。

数据转换测试:目标是验证已存在数据的转换并载入一个新的数据库是否有效。

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

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

相关文章

【网络基础】探索 NAT 技术:IP 转换、NAPT、NAT穿越及代理服务器

文章目录 1. 前言2. IP 转换过程3. NAPT① 基本概念② 工作原理③ 优缺点④ 实际应用 4. 缺陷5. NAT 穿越① 概述② 示例 6. NAT 与 代理服务器① 代理服务器与NAT的区别:② 正向代理 / 反向代理 服务器 1. 前言 NAT(网络地址转换)是一种常见…

Python数据清洗基础

在Python中进行数据清洗和可视化是一个多步骤的过程,涉及到数据的读取、预处理、分析和图形表示。以下是一些关键步骤和代码示例,这些步骤可以帮助你从原始数据中提取有价值的信息,并以直观的方式展示。 数据清洗 读取数据: im…

【Python 千题 —— 基础篇】评论倾向分析

Python 千题持续更新中 …… 脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目描述 在某个电商平台的评论系统中,用户可以提交商品评论。为了分析评论的情感倾向,我们需要编写一个程序来处理用户评论,并对评论内容进行简单的分析和处理。…

Mac/Linux系统matplotlib中文支持问题

背景 matplotlib是python中最常用的数据可视化分析工具,Mac和Linux系统无中文字体,不支持中文显示(希望后续可以改进),需要进行字体的下载和设置才能解决。笔者经过实践,发现Mac系统和Linux系统解决方案略…

1.【R语言】R语言的下载和安装

R语言是一种开源编程语言,它提供了丰富的统计模型和图形绘制功能,广泛用于数据科学、统计分析、数据挖掘和机器学习。R有一个活跃的社区和大量的包,可以满足各种需求,如数据清洗、绘图和报告生成。其强大的数据处理能力和灵活的可…

Ant Design vue 多层for循环form表单自定义校验

数据结构如下&#xff1a;三维数组。 注意&#xff1a;<a-form-model>一定得写在for外面&#xff01;&#xff01;&#xff01;&#xff01; <!-- 弹出框 --> <a-modal:title"title":dialog-style"{ top: 20px }":visible"visible&quo…

Datawhale X 李宏毅苹果书 AI夏令营 入门 Task2-了解线性模型

目录 线性模型分段线性曲线模型变形 线性模型 输入的特征 x 乘上一个权重&#xff0c;再加上一个偏置就得到预测的结果&#xff0c;这样的模型称为线性模型。 分段线性曲线 线性模型有很大的限制&#xff0c;这一种来自于模型的限制称为模型的偏差&#xff0c;无法模拟真实的…

Bluetooth: att protocol

一篇搞懂 ATT 支持的东西都有什么。 READ_BY_GROUP_TYPE_REQ/RSP 如下是 Spec 内容&#xff1a; The attributes returned shall be the attributes with the lowest handles within the handle range. These are known as the requested attributes.If the attributes with th…

零知识证明-基础数学(二)

零知识证明(Zero—Knowledge Proof)&#xff0c;是指一种密码学工具&#xff0c;允许互不信任的通信双方之间证明某个命题的有效性&#xff0c;同时不泄露任何额外信息 导数、偏导数 ,互质数&#xff0c;费马小定理&#xff0c;欧拉定理 1 导数 导数是微积分学中的重要概念&am…

科研绘图系列:R语言组合图形绘图

介绍 柱状图、箱线图和棒棒图组合 加载R包 # Library library(ggplot2) library(dplyr) library(forcats)读取数据 data <- data.frame(name=c("north","south","south-east","north-west","south-west","north…

jquery下载的例子如何应用到vue中

参考测试圈相亲平台开发流程&#xff08;4&#xff09;&#xff1a;选个漂亮的首页 (qq.com) 下载的文件夹解压到v_love项目的pubilc下的static文件夹内&#xff0c;这里放的都是我们的静态资源。 打开文件夹内的index.html&#xff0c;我们先确定下它是不是我们要的东西&…

基于yolov10的PCB检测算法研究

内容&#xff1a;项目将YOLOV10创新后的PCB检测算法成功部署到GD32H757上&#xff0c;实现PCB缺陷的工业产线实时检测。 项目主要支持开源代码&#xff1a;HomiKetalys/gd32ai-modelzoo: Provide deployable deep learning models on gd32 (github.com) &#xff08;想了解将…

信息打点-红队工具篇FofaQuakeKunyuSuize水泽Arl灯塔

知识点&#xff1a; 1、网络空间四大引擎-Fofa&Quake&Shodan&Zoomeye 2、自动化信息收集项目-ARL灯塔&Suize水泽&Kunyu坤舆 3、单点功能信息收集项目-企查&子域名&指纹识别&社工信息 黑暗引擎&#xff1a; https://fofa.info https://qua…

GPT-4 vs LLaMA3.1:核心技术架构与应用场景对比

目录 前言 一、GPT-4 的核心技术架构 1.1 Transformer 结构概述 1.2 GPT-4 的主要组成部分 1.3 GPT-4 的创新与改进 二、LLaMA3.1 的核心技术架构 2.1 模型概述 2.2 LLaMA3.1 的主要组成部分 2.3 LLaMA3.1 的创新与改进 三、GPT-4 和 LLaMA3.1 的主要差异 3.1 模型规…

Native开发与逆向第五篇 - hook log打印

开发demo 新建native项目&#xff0c;实现log打印字符串。 下载地址&#xff1a;https://download.csdn.net/download/u013170888/89698015 #include <android/log.h> #define LOGI(...) __android_log_print(ANDROID_LOG_INFO, "JNI_LOG", __VA_ARGS__)exte…

WireShark网络分析~部署方式

一、《Wireshark网络分析就这么简单》 第一章学习 声明&#xff1a;文章只限于网络学习和实验&#xff0c;请遵守《网络安全法》。 第一章问题一&#xff1a;两台服务器A和B的网络配置如下(见图1)&#xff0c;B的子网掩码本应该是255.255.255.0&#xff0c;被不小心配成了255.…

深入解析C#中的锁机制:`lock(this)`、`lock(privateObj)`与`lock(staticObj)`的区别

前言 在C#的多线程编程中&#xff0c;lock关键字是确保线程安全的重要工具。它通过锁定特定的对象&#xff0c;防止多个线程同时访问同一块代码&#xff0c;从而避免数据竞争和资源冲突。然而&#xff0c;选择适当的锁对象对于实现高效的线程同步至关重要。本文将深入探讨使用…

无人机之电池篇

无人机电池作为无人机的重要组成部分&#xff0c;其性能、使用、保养及选择都至关重要。以下是对无人机电池的综合介绍&#xff1a; 一、无人机电池的基本参数 电池容量&#xff1a;电池容量直接影响无人机的续航能力。大容量电池&#xff0c;如5000mAh的电池&#xff0c;能提…

Python模块内容总结

参考&#xff1a; Python 模块 | 菜鸟教程 (runoob.com) Python 模块(Module)&#xff0c;是一个 Python 文件&#xff0c;以 .py 结尾&#xff0c;包含了 Python 对象定义和Python语句。 模块让你能够有逻辑地组织你的 Python 代码段。 把相关的代码分配到一个模块里能让你的代…

「OC」初识MVC —— 简单学习UITableView的解耦

「OC」初识MVC —— 简单学习UITableView的解耦 文章目录 「OC」初识MVC —— 简单学习UITableView的解耦写在前面认识MVC解耦数据源代理 创建cell的基础类创建section的相关类分离数据源分离代理总结参考资料 写在前面 最近在学习了解MVC&#xff0c;然后开始发现&#xff0c…