软件测试中桩模块与驱动模块的概念与区别(转载)

软件测试名词科普:驱动模块、桩模块 在软件测试中,​驱动模块(Driver Module)​和桩模块(Stub Module)​是两种用于单元测试的关键组件,主要用于模拟测试环境中的依赖关系,确保被测单元(Unit Under Test, UUT)能够独立运行。 阅读详情

桩模块和驱动模块(以C语言为例):

  很多人对桩模块和驱动模块的概念会搞不清楚,那么下面来介绍这两个概念:

  模块结构实例图:

  假设现在项目组把任务分给了7个人,每个人负责实现一个模块。你负责的是B模块,你很优秀,第一个完成了编码工作,现在需要开展单元测试工作,先分析结构图:

  1、由于B模块不是最顶层模块,所以它一定不包含main函数(A模块包含main函数),也就不能独立运行。

  2、B模块调用了D模块和E模块,而目前D模块和E模块都还没有开发好,那么想让B模块通过编译器的编译也是不可能的。

  那么怎样才能测试B模块呢?需要做:

  1、写两个模块Sd和Se分别代替D模块和E模块(函数名、返回值、传递的参数相同),这样B模块就可以通过编译了。Sd模块和Se模块就是桩模块。

  2、写一个模块Da用来代替A模块,里面包含main函数,可以在main函数中调用B模块,让B模块运行起来。Da模块就是驱动模块。

  知识点:

  桩模块的使命除了使得程序能够编译通过之外,还需要模拟返回被代替的模块的各种可能返回值(什么时候返回什么值需要根据测试用例的情况来决定)。

  驱动模块的使命就是根据测试用例的设计去调用被测试模块,并且判断被测试模块的返回值是否与测试用例的预期结果相符

 

单元测试中的驱动程序和桩程序理解 用于模拟被测模块的上级模块,能够调用被测模块,驱模块接受测试数据,调用被测模块并把相关数据传送给被测模块。用于模拟被测模块工作过程中所调用的下层模块,一般很少进行数据处理,一般只检测被测模块传输数据的正确性。运行被测单元,为了隔离单元,根据被测单元的接口,开发相应的驱动程序和桩程序,两者有什么区别呢?驱动程序(Driver),也称驱动模块。桩程序(Stub),也称桩模块。 阅读详情

相关推荐

基于STM32的电子时钟设计

基于STM32的电子时钟设计1、设计目的2、设计具体要求3、proteus仿真图4、程序代码 1、设计目的 (1)掌握使用KEIL MDK5进行软件开发的具体流程; (2)掌握硬件电路的设计方法; (3)掌握STM32微控制器的程序设计及代码编写方法。 2、设计具体要求 (1)通过STM32自带的实时时钟功能获取时间信息; (2)在OLED显示屏上显示日期、时、分、秒等时间信息; (3)通过按键可对时间信息进行修改; (4)具有闹钟设定功能; (5)加分项:自行增加其他功能。 3、proteus仿真图 4

唯一的博客 2万+

什么是桩模块?什么是驱动模块?

软件测试面试题:什么是桩模块?什么是驱动模块?

m0_53396342的博客 4465

从CMT2300A实战出发:Sub1G射频匹配电路设计要点与315MHz应用详解

本文从CMT2300A芯片实战出发,详细解析Sub1G射频匹配电路设计要点,特别针对315MHz应用场景。内容涵盖频段划分逻辑、调制方式选择、晶体振荡器设计等基础认知,以及315MHz匹配电路物料选型、巴伦网络处理等实战技巧,并分享PCB布局防干扰设计和实测验证方法,助力开发者优化射频通信性能。

weixin_29238147的博客 163

驱动模块与桩模块

驱动模块与桩模块驱动模块:用以模拟被测模块的上级模块。驱动模块在集成测试中接受测试数据,把相关的数据传送给被测模块,启动被测模块,并打印出相应的结果。 桩模块:也有人称为存根程序,用以模拟被测模块工作过程中所调用的模块。桩模块由被测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检验被测模块与其下级模块的接口 驱动模块一般是应用于自底向上的集成测试环境中 桩模块一般是应用

qq_29941869的博客 4521

K型热电偶负电压采集难题?3种运放电路设计方案对比(含Multisim仿真)

本文针对K型热电偶在低温测量中产生的负电压采集难题,详细对比了三种运放电路设计方案,包括双电源运放反相放大、单电源仪表放大器和差分放大电路,并结合Multisim仿真数据分析了各方案的性能差异。文章还提供了PCB布局和抗干扰设计的实战技巧,帮助工程师解决热电偶信号采集中的核心挑战。

postgres8guard的博客 1018

数据资产目录(SailCatalog)和数据地图(SailMap)

笔者接下来准备开发大数据平台(XSailboat)中的数据资产目录(SailCatalog)和数据地图(SailMap)相关的功能,本文用以记录笔者关于此部分功能的概念梳理和主体功能设计。

OkGogooXSailboat的博客 2326

测试桩和测试驱动详解

测试桩 一般自顶向下集成时需要使用,模拟子层或下级; 就是你负责测试的模块/方法“所需要调用的”那一部分,所以你需要模仿他们做一个返回值(假的,但符合设计)以供你的模块来调用。 也就是代替被测模块调用的子模块的实体,该实体一般为桩函数,这个测试桩就是我们所说的桩函数。 1. 桩 是指一个软件模块的框架或特殊目标实现,主要用于开发和测试一个组件,该组件调用或依赖这个模块。 2. 桩模块 集成测试前要为被测模块编制一些模拟其下级模块功能的“替身”模块,以代替被测模块的接口,接受或传递被测模块的数据,这些专供测试

每天学习一点点,成长一小步 2235

基于深度学习的智能监考系统(UI界面 + YOLOv8/v7/v6/v5代码 + 训练数据集)

行为检测与识别:能够自动识别考生在考试中的异常行为,如作弊、看手机、交头接耳等。实时监控:在考试期间,系统能够对考生的行为进行实时监控,及时发出警报。用户交互:通过简洁易用的UI界面,便于监考人员进行实时监控、查看警报和视频回放等操作。行为分析与反馈:系统能够识别出考生的违规行为,并提供反馈。本文详细介绍了如何构建基于YOLOv5的智能监考系统,从数据集的准备、YOLO模型的训练,到UI界面的设计与实现,展示了一个完整的深度学习监控系统。

YOLO 781

软件测试中桩模块与驱动模块的概念与区别(转载),打桩

桩模块和驱动模块(以C语言为例):   很多人对桩模块和驱动模块的概念会搞不清楚,那么下面来介绍这两个概念:   模块结构实例图:   假设现在项目组把任务分给了7个人,每个人负责实现一个模块。你负责的是B模块,你很优秀,第一个完成了编码工作,现在需要开展单元测试工作,先分析结构图:   1、由于B模块不是最顶层模块,所以它一定不包含main函数(A模块包含main函数),也就不能独立...

weixin_30731287的博客 402

【yolo】YOLOv8模型导出完全指南:从PT到ONNX及其他格式的完整实践

摘要:本文全面介绍了YOLOv8模型从PT格式导出为ONNX等部署格式的完整流程与最佳实践。重点解析了关键参数(如format、imgsz、simplify)的作用机制,特别强调输入尺寸imgsz会自动继承训练尺寸的特性,并提供了ONNX、TensorRT等格式的典型导出配置方案。文章还总结了常见问题解决办法,推荐使用simplify优化模型性能,同时分享了通过C#实现模型重命名的实用技巧。最后指出"训练决定能力,导出定义接口"的核心原则,帮助开发者高效完成模型部署转换。

songhuangong123的博客 1917

IEEE69节点数据(Matlab)

IEEE69节点数据(Matlab)

weixin_46039719的博客 1162

单元测试之驱动模块和桩模块的作用和区别

看见一篇介绍桩模块和驱动模块作用和区别的博客,比喻的很形象也很好理解,特地与大家分享一下: 桩模块和驱动模块(以C语言为例):   很多人对桩模块和驱动模块的概念会搞不清楚,那么下面来介绍这两个概念:   模块结构实例图:   假设现在项目组把任务分给了7个人,每个人负责实现一个模块。你负责的是B模块,你很优秀,第一个完成了编码工作,现在需要开展单元测试工作,先分析结构图:...

weixin_30266885的博客 1816

nvidia系列教程-AGX-Orin usb3.0接口调试

NVIDIA Jetson AGX Orin 是一款高性能的嵌入式计算平台,适用于 AI 推理、机器人、自动驾驶等应用场景。本文将介绍如何对 AGX Orin 平台上的 USB 3.0 接口进行调试,包括硬件检查、软件配置以及常见问题的排查。本文主要介绍在AGX-Orin平台开启两个usb3.0口的方法。通过以上步骤,您可以有效地调试和优化 NVIDIA Jetson AGX Orin 上的 USB 3.0 接口。

flypig has a dream! 1502

软件测试常见笔试面试题(一)

本博客内容 一、什么是软件测试 二、软件测试的目的 三、什么是需求文档测试 四、什么是设计文档测试 五、α测试是什么 六、β测试是什么 七、什么是驱动模块 八、什么是桩模块 九、什么是白盒测试,有几种方法 十、软件缺陷等级划分 一、什么是软件测试 软件测试是为了发现错误而执行程序的过程,为保证软件质量而采取的措施。   或者说,软件测试是根据软件开发各阶段的规格说明和程序...

xiongluo0628的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【转载】软件测试的方法

一、软件测试的目的 发现缺陷 尽早和尽量多的发现被测对象中的缺陷,应该是测试人员测试过程中最常提起的一个测试目标,也是所谓测试价值的一个的重要体现。发现缺陷的目的是推动开发人员定位和修复问题,测试人员通过再测试和回归测试,确保开发人员已修复缺陷,并没有影响原来正常的区域,从而提高产品质量。开发生命周期的每个阶段,都应该有测试的参与,并尽量多的发现本阶段的缺陷,从而大大提高本阶段的缺陷阶段遏制能力,从而提高测试效率、降低成本和提高质量。 二、软件测试的两大分类 1、白盒测试 白盒测试是把测试对象看作一个打开的

weixin_47719617的博客 155

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

静态白盒测试与软件开发调试的区别,软件测试与程序调试的区别

随着互联网的不断发展,软件测试逐渐成为了大多数程序员都在学习的一个互联网技术,而今天我们就一起来了解一下,软件测试与程序调试的区别。一、软件测试软件测试定义:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试的目的:发现错误而执行程序的过程。软件测试方法:静态测试和动态测试。静态测试包括代码检查、静态结构分析、代码质量度量...

weixin_39980809的博客 685

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

简述软件测试分类

不少软件测试初学的同学很容易混淆软件测试分类,其实软件测试可以按照从不同的维度进行分类。按照测试方法划分有白盒测试、黑盒测试、灰盒测试;按照执行方式划分有手工测试、自动化测试;按照测试技术划分有静态测试、动态测试;按照测试阶段划分有单元测试、集成测试、系统测试。照测试目的分类,可以分为功能测试与非功能测试。 测试方法分类 按照测试方法划分有白盒测试、黑盒测试、灰盒测试 ;灰盒测试本质上不是一个独立的测试方法,它是结合了黑盒测试与白盒测试一...

梦里有阳光 3794

敏捷测试专栏之一 《什么是敏捷软件测试》

本文已经首发于InfoQ中文站InfoQ中文站是一个面向中高端技术人员的在线独立社区,为Java、.NET、Ruby、SOA、敏捷、架构等领域提供及时而有深度的资讯、高端技术大会如QCon、线下技术交流活动QClub、免费迷你书下载如《架构师》等。​在与不少测试从业人员讨论到敏捷的时候,被问得最多的大约是两个问题:“到底什么是敏捷软件测试?”,“敏捷软件开发还需要测试工程师吗?”。前一个问题是对于敏捷测试本身定义的疑问,第二个问题则是对敏捷开发将测试工程师排除在外的担心。

m0_73421468的博客 253

软件测试与人工智能结合,人工智能技术与软件测试之间的关系

随着互联网的不断发展,我们在软件测试技术上也获得了很大的进步,由纯人力发展成为了自动化测试。但是,今天我们要给大家讲解的是人工智能与软件测试技术的结合。下面就一起来了解一下具体情况吧。完全没有自动,你需要自己写测试!驾驶辅助:AI可以查看到页面,帮助你写出断言。你还是要自己写“驱动”应用程序的代码,但是AI可以检查页面,并确保页面中的期望值是正确的。部分自动化:虽然能分辨实际页面和期望值的区别这一...

weixin_30923925的博客 1388

软件测试

一、什么是软件测试 1.什么是软件测试   软件测试是为了发现程序中的错误而执行程序的过程。 2.软件测试的目的   测试的根本目的就是为了发现尽可能多的缺陷。 3.软件测试的分类   按照测试技术来分:黑盒测试、白盒测试、灰盒测试     黑盒测试:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要...

ansuoge3320的博客 63

tp5 中->where 包含_我在面试软件测试工程师过程中的一些小总结!

背景:虽然测试行业在2019不太景气,面试后的一些面试题归集和总结,为了将来面试时使用。所有的面试题中我发现超过90%都是基础性的面试题,只要有自动化基础,功能测试接触,再加上面试的时候态度ok,且不卑不亢即可。切记,面试时一定要不卑不亢,切记心浮气躁和心虚,你懂得!以下是我面试的经验所得:http与https有何区别答案:①https协议需要到ca申请证书,一般免费证书较少,因而需要一...

weixin_39946274的博客 187
上一篇: raid阵列卡驱动重装win 2003系统,用U盘模拟软驱
下一篇: linux 查看系统版本
snlying
博客等级 码龄21年 152粉丝 46原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值