模块接口测试

news2025/1/23 12:58:39

单元测试是代码正确性验证的最重要的工具,也是系统测试当中最重要的环节。也是唯一需要编写代码才能进行测试的一种测试方法。在标准的开发过程中,单元测试的代码与实际程序的代码具有同等的重要性。每一个单元测试,都是用来定向测试其所对应的一个单元的数据是否正确。

一、单元测试具有一下几个好处

1、能够协助程序员尽快找到BUG的具体位置 

2、能够让程序员对自己的程序更有自信

3、能够让程序员在提交项目之前就将代买变得更加健壮

4、能够协助程序员更好的进行开发

5、能够向其他程序员展现你的程序该如何调用

二、单元测试任务包括

1、模块接口测试

测试接口正确与否应该考虑下列因素

(1)、输入的实际参数与形式参数的个数是否相同;
(2)、输入的实际参数与形式参数的属性是否匹配;
(3)、输入的实际参数与形式参数的量纲是否一致;
(4)、调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;
(5)、调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;
(6)、调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;
(7)、 调用预定义函数时所用参数的个数、属性和次序是否正确;
(8)、是否存在与当前入口点无关的参数引用;
(9)、是否修改了只读型参数;
(10)、对全程变量的定义各模块是否一致;
(11)、是否把某些约束作为参数传递。

(12)、文件使用前是否已经打开;
(13)、是否处理了文件尾;
(14)、是否处理了输入/输出错误;
(15)、输出信息中是否有文字性错误;
 

2、模块局部数据结构测试

检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确。局部数据结构往往是错误的根源,应仔细设计测试用例

应该考虑下列因素

(1)、不合适或不相容的类型说明;
(2)、变量无初值;
(3)、变量初始化或省缺值有错;
(4)、不正确的变量名(拼错或不正确地截断);
(5)、出现上溢、下溢和地址异常。

3、模块中所有独立执行测试

应该考虑下列因素

(1)、误解或用错了算符优先级;
(2)、混合类型运算;
(3)、变量初值错;
(4)、精度不够;
(5)、表达式符号错。

(6)、不同数据类型的对象之间进行比较;
(7)、错误地使用逻辑运算符或优先级;
(8)、因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;
(9)、比较运算或变量出错;
(10)、循环终止条件或不可能出现;
 

4、模块的各条错误处理测试

应该考虑下列因素

(1)、输出的出错信息难以理解;
(2)、记录的错误与实际遇到的错误不相符;
(3)、在程序自定义的出错处理段运行之前,系统已介入;
(4)、异常处理不当;
(5)、错误陈述中未能提供足够的定位出错信息。
 

三、常用的测试方法

1.测试异常

可以直接对方法进行异常测试,也可以对模拟对象进行异常测试,但是,对模拟对象进行异常测试,很少用,所以,这里就介绍对方法的异常测试。请看如下代码,当用户名为空的时候,抛出异常。

例如

C# 代码   


public bool Valid(string userName, string passWord)


   {

       if (string.IsNullOrEmpty(userName)) throw new ArgumentNullException("userName is null");

       var isValid = userName == "admin" && passWord == "123456";

       Log.Write(userName);

       return isValid;

   }

测试代码如

[Test]

 [ExpectedException(typeof(ArgumentNullException))]

 public void Vaild_Throw_Test()

  {
      MyLogin l = new MyLogin();
      l.Valid("", "123456");
  }

这里需要特性“ExpectedException”,意思是期待抛出一个异常。这里不需要再进行断言了,抛出异常后,后面的代码也就不会执行了。

2.测试返回值

这里主要讲测试模拟对象的返回值。这里用到了一个LastCall的一个类,比较常用,一些辅助测试的功能,都在该类中。

测试代码如下

[Test]

public void Valid_Return()

{
    MockRepository mock = new MockRepository();
    var log = mock.DynamicMock<ILog>();
    using (mock.Record())
    {
        log.WriteLog("admin");
        LastCall.Return(0);
    }
    var returnValue = log.WriteLog("admin");
    Assert.AreEqual(returnValue, 0);
}   

3.测试模拟对象的参数传递

当调用模拟对象时,可能需要传递参数,如果参数的值不一至时,会导致测试失败,比如:我需要传递一个字符串,其中包含了一个GUID+UserName,这里GUID可能我们无法模拟,所以,测试参数时,只需要测试UserName就可以。

方法代码如下:

  public bool Valid_Paramter(string userName, string passWord)

    {
        Log.Write(Guid.NewGuid() + userName);
        return userName == "admin" && passWord == "123456";
    }

测试代码如下:

[Test]

 public void Valid_Paramter()

 {
     MockRepository mock = new MockRepository();
     var log = mock.DynamicMock<ILog>();
     using (mock.Record())
     {
         log.Write("admin");
         LastCall.Constraints(Rhino.Mocks.Constraints.Text.Contains("admin"));
     }

     MyLogin login = new MyLogin();
    login.Log = log;
    var valid = login.Valid_Paramter("admin", "123456");
    Assert.AreEqual(valid, true);
    mock.VerifyAll();
 }

2023最新Jmeter接口测试从入门到精通(全套项目实战教程)

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

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

相关文章

【笔记】Splay

【笔记】Splay 目录 简介右旋左旋 核心思想操作a. Splayb. 插入c. 删除 信息的维护例题AcWing 2437. SplayP3369 【模板】普通平衡树 简介 Splay 是一种平衡树&#xff0c;并且是一棵二叉搜索树&#xff08;BST&#xff09;。 它满足对于任意节点&#xff0c;都有左子树上任意…

fdbus之CBaseMessage

总体介绍 这个类是一个很重要的的类&#xff0c;fdbus中传递对象就是这个类的实例&#xff0c;该类中包含了很多重要的信息。可以这样理解&#xff0c;再fdbus的通信中&#xff0c;这个类的地位至关重要。他们的通信的内容就是该类定义的一些信息。 虽然CFdbBaseObject定义了…

如何进一步全面提高项目估算精准度?

项目估算非常重要&#xff0c;这直接关系着项目的成本和收入&#xff0c;如果估算不准确&#xff0c;将为项目带来较大风险。一般软件规模可以用多种方式进行估算&#xff0c;但是用功能点估算方式更准确&#xff0c;而自动估算让估算更快速&#xff0c;我们以CoCode开发的估算…

初识网络编程

一、概述 地球村&#xff1a;亦称世界村&#xff0c;是通过电子媒介将世界紧密联系起来的形象表达&#xff0c;是信息网络时代的集中体现 TCP和UDP&#xff1a; TCP&#xff1a;打电话 -->连接 -->接了 -->通话 UDP&#xff1a;发送完即可 -->接收 计算机网络&a…

QQ表情包存储位置解析

一些常见的设备和系统的QQ表情包存储位置&#xff1a; Windows系统&#xff1a; 路径&#xff1a;C:\Users[用户名]\Documents\Tencent Files[QQ号码]\Image\Image\CustomFace 在这个文件夹中&#xff0c;您可以找到所有自定义的QQ表情包。 Android系统&#xff1a; 路径&am…

程序开发常用在线工具汇总

菜鸟工具# https://c.runoob.com/ 编码# ASCII码# https://www.habaijian.com/ 在线转换# https://www.107000.com/T-Ascii/http://www.ab126.com/goju/1711.html Base64# 在线转换# https://www.qqxiuzi.cn/bianma/base64.htmhttp://www.mxcz.net/tools/Unicode.aspx …

软件架构的演化和维护

软件架构的演化和维护 定义 定义 顶不住了&#xff0c;刷题去了&#xff0c;不搞这个了&#xff0c;想吐。。。

STM32Cube 开发之读写内部Flash--电源项目ADC采样校准系数存储-实现掉电读取数据--STM32或者GD32F处理器

STM32Cube 开发之读写内部Flash–电源项目ADC采样校准系数存储-实现掉电读取数据 一、需求介绍 1.1 在进行电源项目开发中&#xff0c;输入与输出的电压电流经过硬件电路分压或者差分变换后&#xff0c;将低压的电压信号给到单片机如STM32F1系列单片机的ADC采样端口&#xff…

网速Full Power!这款4G网关信号达360度无死角

数字化转型浪潮下,如何实现可靠的无线互联成为制造企业面临的新课题。广州数智自动化最近通过部署星创SG500 4G网关,成功实现了某工业园区全域无线覆盖和多系统安全访问。 SG500支持全球主流的4G网络频段,可灵活搭配通信运营商,提供高达150Mbps的无线传输速率。它采用强大的四核…

性能压测工具:wrk

一般我们压测的时候&#xff0c;需要了解衡量系统性能的一些参数指标&#xff0c;比如。 1、性能指标简介 1.1 延迟 简单易懂。green:一般指响应时间 95线&#xff1a;P95。平均100%的请求中95%已经响应的时间 99线&#xff1a;P99。平均100%的请求中99%已经响应的时间 平…

三.vue2路由知识全总结

Vue Devtools&#xff1a;插件安装&#xff0c;展示模块中的数据 vue-router 应用场景&#xff1a;Vue Router 是 Vue.js 的官方路由。它与 Vue.js 核心深度集成&#xff0c;让用 Vue.js 构建单页应用变得轻而易举。 嵌套的路由/视图表模块化的、基于组件的路由配置路由参数、…

谷器数据参加世界制造业大会及数字化转型高峰论坛

9月20日至24日&#xff0c;由工业和信息化部、科技部、商务部、国务院国资委、中国工程院、安徽省人民政府等单位组织共同主办的2023世界制造业大会在合肥市滨湖国际会展中心盛大举行。谷器数据受邀出席&#xff0c;并同期参加”数字化转型高峰论坛”&#xff0c;与国家工信部相…

向量数据库X云计算驱动大模型落地电商行业,Zilliz联合AWS探索并贡献成熟解决方案

近日,由Zilliz 联合亚马逊云科技举办的【向量数据库 X 云计算 驱动大模型落地电商行业】活动在上海落幕,获得业内专业人士的广泛好评。 众所周知,大模型技术的发展正加速对千行万业的改革和重塑,向量数据库作为大模型的海量记忆体、云计算作为大模型的大算力平台,是大模型…

机器人中的数值优化|【五】BFGS算法非凸/非光滑处理

机器人中的数值优化|【五】BFGS算法的非凸/非光滑处理 往期内容回顾 机器人中的数值优化|【一】数值优化基础 机器人中的数值优化|【二】最速下降法&#xff0c;可行牛顿法的python实现&#xff0c;以Rosenbrock function为例 机器人中的数值优化|【三】无约束优化&#xff0…

微信里怎么添加阅读付费链接

在微信中添加阅读付费链接为主题&#xff0c;首先需要开通微信支付商户号&#xff0c;然后创建自定义菜单&#xff0c;并设置跳转到付费链接的逻辑。以下是详细步骤&#xff1a; 注册并开通微信支付商户号 在微信开放平台上注册并开通微信支付商户号。这一步需要营业执照、法…

企业如何识别和满足客户需求的5个要点

随着市场竞争的日益加剧&#xff0c;企业需要更加注重客户需求&#xff0c;以获得持续的发展。而企业在满足客户需求上&#xff0c;则需要遵循一些基本的原则和方法。本文将介绍企业识别和满足客户需求的5个要点。 1、理解客户 企业需要了解客户的需求、想法和行为&#xff0c…

Python 3.12.0 正式版即将发布!

导读Python 3.12.0 发布了第 2 个 RC 版本&#xff0c;也是最后一个 RC。正式版将于 2023 年 10 月 2 日星期一发布。 开发团队表示&#xff0c;进入候选版本阶段后&#xff0c;只接受经过 review 且修复明确错误的代码。RC2 是发现并修复重要问题的最后机会。 从该版本开始&a…

安装nvm包含卸载node及卸载nvm

卸载node 1、在命令行输入where node查看node所在位置&#xff0c;删除node.exe所在的父级文件夹 2、控制面板中程序卸载&#xff0c;卸载node.js 安装nvm 1、安装nvm-setup.exe 2、命令行运行nvm v&#xff0c;如果出现版本号表示安装成功 3、从node官网下载node版本&#…

事件循环——message loop

1 浏览器的进程模型 1.1 进程 程序运行需要有它自己专属的内存空间&#xff0c;可以把这块内存空间简单的理解为进程。 每个应用至少有一个进程&#xff0c;进程之前相互独立&#xff0c;即使要通信&#xff0c;也需要双方同意。比如&#xff1a;qq、微信、王者荣耀进程。 …

电视盒子什么牌子好?花费30天测评盘点超值电视盒子推荐

最近超多网友咨询我不知道电视盒子什么牌子好&#xff0c;为了推荐结果更客观公正&#xff0c;我将最热门的十款电视盒子买回来进行了一个月的深度测评&#xff0c;最终筛选了五款最优秀的电视盒子推荐给大家&#xff0c;不懂电视盒子怎么挑选那这篇文章就不能错过了。 1、泰捷…