1.目的:由于接口众多,服务端变更接口,会造成服务停用更新,造成客户端不能使用或报错,

在此评估【Web中心】此服务端,接口接口参数增加或减少,是否对客户端造成影响

2.评估内容:服务端增加单值参数,服务端减少单个值参数,Mod对象增加参数,Mod对象减少参数,

(而Json数据类型在此不作评估内容,是因为Json对象反序列化具有很好的伸缩型,不会影响客户端调用方)

3.附PCB工程系统集成示意图:

一.Web服务端增加单个值参数

改前-- 服务端(1个参数):

        /// <summary>
/// 测试Web接口(单值参数)
/// </summary>
/// <param name="ar1"></param>
/// <returns></returns>
public string getInfoTest(string ar1)
{
return $"getInfoTest传参测试{ar1}";
}

客户端调用(1个参数):

         string result = WebOrc2_.getInfoTest("");
// 返回: getInfoTest传参测试1

改后-- 服务端(2个参数)---增加参数:

        /// <summary>
/// 测试Web接口(单值参数)
/// </summary>
/// <param name="ar1"></param>
/// <returns></returns>
public string getInfoTest(string ar1, int ar2)
{
return $"getInfoTest传参测试{ar1}___{ar2}";
}

客户端调用(1个参数)---客户端不更新接口引用:

        string result = WebOrc2_.getInfoTest("");
// 返回: getInfoTest传参测试1___0

小结:对于服务端接口增加单值参数后,是不会造成客户端调用报错的,服务端对于增加的参数初始值处理:如:int初始0,  string初始null

二. Web服务端减少单个值参数

改前-- 服务端(2个参数):

         /// <summary>
/// 测试Web接口(单值参数)
/// </summary>
/// <param name="ar1"></param>
/// <returns></returns>
public string getInfoTest(string ar1, int ar2)
{
return $"getInfoTest传参测试{ar1}___{ar2}";
}

客户端调用(2个参数):

         string result = WebOrc2_.getInfoTest("",);
// 返回: getInfoTest传参测试1___2

改后-- 服务端(1个参数):

      /// <summary>
/// 测试Web接口(单值参数)
/// </summary>
/// <param name="ar1"></param>
/// <returns></returns>
public string getInfoTest(string ar1)
{
return $"getInfoTest传参测试{ar1}";
}

客户端调用(2个参数)---客户端不更新接口引用:

           string result = WebOrc2_.getInfoTest("",);
// 返回: getInfoTest传参测试1

小结:对于服务端接口减少单值参数后,是不会造成客户端调用报错的

三. Web服务端增加Mod参数

改前-- 服务端(Mod类1个参数):

        /// <summary>
/// 测试Web接口(单值参数)
/// </summary>
/// <param name="ar1"></param>
/// <returns></returns>
public string getInfoTest(ModTest mod)
{
return $"getInfoTest传参测试{mod.ar1}";
}
public class ModTest
{
public string ar1 { get; set; }
}

客户端调用(Mod类1个参数):

            ModTest mod_ = new ModTest();
mod_.ar1 = "";
string result = WebOrc2_.getInfoTest(mod_);
// 返回: getInfoTest传参测试1

改后-- 服务端(Mod类2个参数)---增加参数:

        /// <summary>
/// 测试Web接口(单值参数)
/// </summary>
/// <param name="ar1"></param>
/// <returns></returns>
public string getInfoTest(ModTest mod)
{
return $"getInfoTest传参测试{mod.ar1}__{mod.ar2}";
}
public class ModTest
{
public string ar1 { get; set; }
public string ar2 { get; set; }
}

客户端调用(Mod类1个参数)--客户端不更新接口引用:

            ModTest mod_ = new ModTest();
mod_.ar1 = "";
string result = WebOrc2_.getInfoTest(mod_);
// 返回: getInfoTest传参测试1__

小结:对于服务端接口Mod减少参数后,是不会造成客户端调用报错的,服务端对于增加的参数初始值处理:如:int初始0,  string初始null

四.Web服务端减少Mod参数

改前-- 服务端(Mod类2个参数):

        /// <summary>
/// 测试Web接口(单值参数)
/// </summary>
/// <param name="ar1"></param>
/// <returns></returns>
public string getInfoTest(ModTest mod)
{
return $"getInfoTest传参测试{mod.ar1}__{mod.ar2}";
}
public class ModTest
{
public string ar1 { get; set; }
public string ar2 { get; set; }
}

客户端调用(Mod类2个参数):

           ModTest mod_ = new ModTest();
mod_.ar1 = "";
mod_.ar2 = "";
string result = WebOrc2_.getInfoTest(mod_);
// 返回: getInfoTest传参测试1__2

改后-- 服务端(Mod类1个参数):

        /// <summary>
/// 测试Web接口(单值参数)
/// </summary>
/// <param name="ar1"></param>
/// <returns></returns>
public string getInfoTest(ModTest mod)
{
return $"getInfoTest传参测试{mod.ar1}";
}
public class ModTest
{
public string ar1 { get; set; }
}

客户端调用(Mod类2个参数)--客户端不更新接口引用:

            ModTest mod_ = new ModTest();
mod_.ar1 = "";
mod_.ar2 = "";
string result = WebOrc2_.getInfoTest(mod_);
// 返回: getInfoTest传参测试1

小结:对于服务端接口Mod类减少参数后,是不会造成客户端调用报错的

PCB WCF Web接口增减参数后,在客户端不更新的情况,是否影响客户端,评估测试的更多相关文章

  1. 手把手教你如何优雅的使用Aop记录带参数的复杂Web接口日志

    前言 不久前,因为需求的原因,需要实现一个操作日志.几乎每一个接口被调用后,都要记录一条跟这个参数挂钩的特定的日志到数据库.举个例子,就比如禁言操作,日志中需要记录因为什么禁言,被禁言的人的id和各种 ...

  2. silverlight+wcf 项目 silverlight获得web程序的参数

    silverlight 可以通过属性InitParams 获得参数,如果参数是动态的需要web程序传递的,具体操作如下: web程序后台:AppID,USERID需要的参数 this.frmRepor ...

  3. 使用shell做http web接口,可以传递参数--废弃

    此文章废弃,参考另一篇 参考网址: https://me.jinchuang.org/archives/114.html https://www.cnblogs.com/jinchuang/p/142 ...

  4. JMeter基于http请求的web接口性能测试总结

    [本文出自天外归云的博客园] 基于http请求的web接口性能测试总结 压测的目的:对于Web接口压测的目的最终是要在对数据库造成压力的情况下观察压测服务器的cpu是否达到预警值.memory是否发生 ...

  5. python WEB接口自动化测试之requests库详解

    由于web接口自动化测试需要用到python的第三方库--requests库,运用requests库可以模拟发送http请求,再结合unittest测试框架,就能完成web接口自动化测试. 所以笔者今 ...

  6. Android应用安全之WEB接口安全

    Android应用安全不仅包括客户端的安全,也包括web接口的安全.移动App中的Web接口安全主要分为以下几块: 1.SQL注入漏洞 这是一个不能再常见的漏洞类型了,由于App的特性,开发人员认为使 ...

  7. WEB接口测试之Jmeter接口测试自动化 (一)

    软件测试自动化从不同的测试阶段分类,可从下层到上层依次分为单元测试-->接口测试-->界面自动化测试. 单元测试一般有开发人员自行完成,而界面自动化测试合适的测试条件又很难达到,测试人员在 ...

  8. WEB接口测试之Jmeter接口测试自动化 (一)(初次接触)

    软件测试自动化从不同的测试阶段分类,可从下层到上层依次分为单元测试-->接口测试-->界面自动化测试. 单元测试一般有开发人员自行完成,而界面自动化测试合适的测试条件又很难达到,测试人员在 ...

  9. 利用 Bean Validation 来简化接口请求参数校验

    团队新来了个校招实习生静静,相互交流后发现竟然是我母校同实验室的小学妹,小学妹很热情地认下了我这个失散多年的大湿哥,后来... 小学妹:大湿哥,咱们项目里的 Controller 怎么都看不到参数校验 ...

随机推荐

  1. tac

    功能说明:反向显示文件内容. 参数选项: -b 在行前而非行尾加分隔标志. -r 将分隔标志视作正则表达式来解析. -s 使用指定字符串代替换行作为分隔标志.   cat命令与tac命令的对比:

  2. (转)淘淘商城系列——初始SolrCloud

    http://blog.csdn.net/yerenyuan_pku/article/details/72944611 本文我只是简单介绍一下SolrCloud,如果大家要是感兴趣的话,可以参考Sol ...

  3. Address space layout randomization

    Address space layout randomization (ASLR) is a computer security technique involved in preventing ex ...

  4. Python 之多线程应用

    import socket from threading import Thread def recv_data(): while True: recv_info = udp_socket.recvf ...

  5. jquery 实现 单选框点击取消

    <label for="1" class="z-label"> <input type="radio" class=&qu ...

  6. win10安装mysql 8.0.11

    mysql安装包可到官网下载,地址:https://dev.mysql.com/downloads/mysql 1.首先解压文件包,我这解压到E:\install_work\mysql目录下: 2.发 ...

  7. java 导入导出的 命令

    $exp lddba/ld_321@192.168.1.3/testora file=E:\db_bak\ld20170219_1testora.dmp log=E:\db_bak\ld2017021 ...

  8. time、datatime模块

    python中时间日期格式化符号 %Y 年份(4位数表示) %y 年份(2位数表示) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数 %I 12小时制小时数 %M 分 ...

  9. python下操作mysql 之 pymsql

    python下操作mysql  之  pymsql pymsql是Python中操作MySQL的模块, 下载安装: pip3 install pymysql 使用操作 1, 执行SQL #!/usr/ ...

  10. BZOJ 1452 Count 【模板】二维树状数组

    对每种颜色开一个二维树状数组 #include<cstdio> #include<algorithm> using namespace std; ; ][maxn][maxn] ...