自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘一凡的博客

软件测试、开发,测试总监

  • 博客(104)
  • 资源 (5)
  • 收藏
  • 关注

原创 一个用于并发批量执行大量关键字的robot framework库。

这个库用于并发批量执行大量robotframework关键字。从而缩短案例执行时间。使用concurrent.futures.ProcessPoolExecutor进程池并发执行同一个robotframework关键字很多次。

2023-12-29 19:25:23 468 1

原创 使用robot framework提供的Listener机制,实现相关接口,实现向控制台实时打印robot所执行的关键字的相关详细信息,即实时log。

robot命令执行robot framework用例时,看不到关键字的详细信息,只有等到用例执行完成,才能在log文件中看到详细信息。这里使用robot提供的Listener机制,实现相关接口,实现向控制台实时打印所执行的关键字的相关详细信息,即实时log。

2023-12-29 19:08:23 725 1

原创 使用子进程执行关键字的Robot Framework库。可以使用多个子进程同时执行相同或者不同的关键字,从而使得robot具有并发执行关键字的能力。

使用子进程执行关键字的Robot Framework库。可以使用多个子进程同时执行相同或者不同的关键字,从而使得robot具有并发执行关键字的能力。使用multiprocessing.Process创建子进程。使用multiprocessing.Manager创建多进程安全的字典存储子进程的返回值。为了减少学习成本,这个库的API和标准库Process的API类似。

2023-12-29 18:42:18 662

原创 一个并发安全的简单json文件的操作库。适合于完全独立的多个进程通过JSON文件的内容协调工作的场景。

一个并发安全的简单json文件的操作库。适合于完全独立的多个进程通过JSON文件的内容协调工作、构建分布式应用的场景。json文件的内容对应一个简单的字典,字典元素的值是简单的数据类型,比如布尔值、数值、字符串,不能是字典、列表和集合等复合类型。使用文件锁保证多进程并发操作安全。要求读写json文件前,要先创建json文件。支持日志记录,如果要记录日志,要先创建日志文件。

2023-12-29 18:21:52 397

原创 OSPF router-id重复时现象和原理分析

本文分析了OSPF router-id重复时的现象,讲解了其背后的原理,主要涉及路由和LSA的变化。主要讲解了区域内router-id重复的情况,捎带简单分析了ABR和ASBR的router-id和其它OSPF路由器重复的情况。

2023-01-03 21:45:00 2134 1

原创 使用locust测试百万并发TCP连接

使用locust测试百万并发TCP连接。jmeter每个htttp user是一个线程。Locust每个http user是一个协程。所以相同的资源条件下locust能模拟的http user数目远超jmeter。

2022-12-15 21:30:00 1562

原创 命令行交互性三个级别及其自动化解决方案

命令行交互性三个级别及其解决方案

2022-11-26 19:30:54 857

原创 robotframework-sshlibrary简介、关键字讲解、Read_until_xxx代码分析和实用关键字send_command的封装

robotframework-sshlibrary简介、关键字讲解、Read_until_xxx代码分析和实用关键字send_command的封装

2022-11-26 16:30:38 2826 1

原创 使用PICT生成成对组合进行组合覆盖测试,以及PICT和正交表的比较

使用PICT生成成对组合进行组合覆盖测试,以及PICT和正交表的比较

2022-11-24 20:35:44 1741

原创 linux中IP in IP隧道、IP GRE隧道和vxlan隧道的配置方法和报文结构。

linux中IP in IP隧道、IP GRE隧道和vxlan隧道的配置方法和报文结构。

2022-06-10 19:37:41 3910

原创 valgrind内存检测原理、使用和报错的含义

valgrind内存检测原理、基本使用和报错的含义详解。

2022-06-10 19:11:40 1306

原创 ab的使用和行为分析

ab的全称是Apache Benchmark。用于测试HTTP服务器的性能。ab命令会创建很多的并发访问连接,使用多线程模拟多个访问者同时对某一URL地址进行访问。支持http和https。本文讲解了ab的基本使用和常见测试场景中的行为。......

2022-06-10 18:56:01 577 1

原创 匹配linux命令提示符的正则表达式

匹配linux命令提示符的正则表达式

2022-01-22 20:06:23 746

原创 谈谈BGP的可扩展性和用途

BGP用于在AS之间传播IPv4单播路由。这是BGP的基本功能。IBGP会话帮助路由穿过一个AS内部。其实BGP还可以用于通告很多其它类型的信息,有两个原因

2022-01-05 19:43:56 1084

原创 MTU对OSPF建邻居的影响,要求MTU一致的必要性、有效性和易用性。

OSPF要求两侧邻居的MTU要一致。这么说并没有错,因为这只是一种简单的概括性的说法。但是如果细说起来,这种说法就不够严瑾。因为MTU是在DD报文中携带的,而DD报文是从exstart状态开始才交互的,但是Drother之间的最高的邻居状态是Two-way。所以MTU不同,并不影响DRother之间的建立邻居,只影响DR/BDR和其它路由器建立full状态的邻接关系。两侧邻居的MTU不同,有时候邻居状态是exstart/exstart,但是有时候邻居状态又是exstart/exchange,这是为什么呢

2022-01-04 20:09:44 3297

原创 从本文中提取所有json字符串,返回字典组成的列表

从本文中提取所有json字符串,转换为字典列表

2021-12-06 19:07:46 1354 1

原创 网络设备自动化测试之命令配置、no命令的自动探索和命令删除

设计思路首先说命令配置将多条要配置的命令一次性进行配置并且为了删除考虑将命令存放在结构化的列表中。每当配置了新的命令时,都将其追加到这个列表中。分多次配置同一一级命令下的二级命令是没有问题的。例如,要配置的命令块是interface vlan 2001 ip ospf retransmit-interval 50 ip ospf mtu-ignorerouter ospf 1 redistribute ospf 2 route-map 1 metric-type 1 metri

2021-09-03 22:20:10 982 1

原创 网络设备自动化测试之逻辑拓扑自动生成

功能、性能测试自动化中因为每个案例有不同的拓扑,总共有几十种拓扑。不能针对每种拓扑都去连好线,这样资源开销太大,又难以维护。实际中我们使用拓扑交换,每台DUT只需要和拓扑交换机相连即可。然后定义逻辑拓扑的xml文件,这里定义了三角形的逻辑拓扑xml文件triangel.xml。根据逻辑拓扑来划分拓扑交换机上的vlan,从而实现逻辑拓扑的自动生成。也会为每个DUT的接口自动分配IP地址。pysical_top.xml<?xml version="1.0" encoding="UTF-8"?&g

2021-09-01 20:09:01 1537 3

原创 网络设备集成测试/组网测试拓扑/组网自适应自动化配置脚本示例

思路 网络设备集成测试/组网测试自动化配置脚本的示例。本例中使用的是cisco模拟器,IOS版本是12.4。主要诉求是能够自适应拓扑变化和组网方式变化。本例中演示了域内MPLS/BGP VPN组网环境中P网络的OSPF和BGP的自动配置。比如本例中dut2做PE、dut3做RR,只需修改配置文件,脚本可以自适应。添加dut4连接到dut2上,做为一个新的PE,只需修改配置文件,脚本可以自适应。本例中要求设备已经连好线,接口已经up,配置好了接口ip地址,也配置好了loopback地址。源.

2021-08-31 19:34:35 785

原创 ospf 5类LSA和7类LSA中的forwarding address字段的作用

forwarding address的作用。Forwarding address在5类LSA和7类LSA中都有,作用是相同的。forwarding address用来通告达到AS外部网络的更快捷的下一跳。以免在广播网上可能出现的多走一跳的问题。例如router1、router2、router3连在同一广播网上。Router1和router2属于一个OSPF路由域。Router1重发布下一跳为router3的路由。如果不填写Forwarding Address。Router2会先把数据发送给rou

2021-03-12 12:50:00 751 1

原创 PIM-SM基础原理:共享树的建立、源注册、共享树向源树的切换

共享树共享树的概念共享树(shared tree/RP Tree)中无论组播组的源是什么,都有一个共同的根。所有这些树的共享根被称为RP(集合点)。在共享树中,我们会看到(*,G),因为并不关心源,星号代表任何源。所有的流量从源发送到RP,然后数据沿着共享树到达接收者。共享树的建立当PIM-SM路由器收到组播组G的IGMP membership report,它检查是否创建了对应的(*, G)。如果有了,则把收到membership report的接口加入到OIL(outgoing inte

2021-03-12 12:48:48 2201 1

原创 使用gcov进行C语言代码覆盖率统计

介绍:gcov是一个测试代码覆盖率的工具。它必须与GCC一起使用来分析程序,以帮助并发现程序的未测试部分,还可以结合lcov工具生成html格式的统计报告,可以方便的查看代码覆盖率的情况,甚至可以查看每一行代码的执行次数。基本原理:基本块BB:如果一段程序的第一条语句被执行过一次,这段程序中的每一条语句都要执行一次,那么这段程序构成一个基本块。一个BB中的所有语句的执行次数一定相同。一般情况下BB的最后一条语句一定是一个跳转语句,跳转的目的地是另外一个BB的第一条语句,如果跳转是有条件的,就产生

2021-03-02 19:59:55 6734 2

原创 考核漫谈

考核漫谈做部门经理已经快十年了。公司里每个月有考核,每个季度有季度考核,每年有年度考核。担心自己对下属的考核不够充分,所以会读书和思考,期望能够最大程度上匹配下属的实际情况,也能帮助他们成长,让部门业绩更好。考核目的:考核的目的是为了改善绩效。而不是为了修理谁。要让被考核者明白,考核是改进自己业绩的一次机会,管理者会想办法帮助他改善绩效。改善的建议不宜多,每个季度能改善一个方面就很不错了。改善的方面应该是和具体工作相关的,而不是个性、价值观等方面的,那些是个人的选择,考核者无权干涉,..

2021-02-07 12:31:50 369

原创 软件测试杂谈:测试设计、bug漏测、探索测试、能测出好软件吗?

软年测试杂谈:测试设计、bug漏测、探索测试、能测出好软件吗?关于bug漏测:非测试人员最喜欢问的就是,为什么会有漏测?其实这和开发写的代码中有bug是一个道理。开发不能保证自己的思路一定正确,也无法保证程序各种路径、环境、状态下都工作正常。测试人员也一样。有了测试人员只是增加了一层扑捉bug的网,但是总有漏网的。因为测试人员是最后一道防线,所以任何漏了的,测试人员都有责任。要分析遗漏的原因,思考改进的方法。虽然漏测总是有,但是只有这样,才能让测试人员有足够的质量意识,不断减少漏测。减少漏.

2021-02-02 12:26:28 438 7

原创 MPLS/BGP虚拟专用网络跨域解决方案 背靠背VRF(VRF-to-VRF)/Option A、One-hop MP-EBGP/Option B、Multi-hop MP-EBGP/Option C

背靠背VRF(VRF-to-VRF)/Option A基础拓扑CE1---PE1---P1---ASBR1-----ASBR2---P2---PE2---CE2路由通告VPNv4路由是分段逐AS通告的。CE1将IPv4路由通告给PE1。PE1将VPNv4路由通告给ASBR1。ASBR1通过匹配RT,将其放入对应的VRF中,然后将IPv4路由通告给ASBR2。ASBR2将VRF下收到的路由转换成VPNv4路由通告给PE2。PE2通过RT匹配,将路由放入对应的VRF中。最后通告IPv4路由给CE

2021-01-27 22:38:44 1166

原创 MPLS/BGP虚拟专用网络路由通告和数据转发

MPLS/BGP虚拟专用网络路由通告当PE设备从某个VRF中的VPN站点接收到IPv4路由之后,它就在IPv4前缀前面添加该VRF的RD(8个字节长),IPv4前缀就变成了VPNv4前缀。PE为本地每个VRF分配一个MBGP标签(3个字节长)。这里还有另外两种方式,第一种是为本地每个启用了VRF的接口分配一个MBGP标签,第二种是为本地每条VPNv4路由分配一个MBGP标签(三个字节)。长度、标签、VPNv4路由三部分,组成了MP_UNREACH_NLRI属性中的NLRI字段。地址族设置为AFI=1

2021-01-27 22:28:07 1173 1

原创 IP报文格式详解

IP报文首部讲解 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service|

2021-01-27 22:17:58 5395

原创 python中内置函数getatrr()、setattr()、hasattr()、delattr()的作用

Python可以在类之外添加、删除属性,虽然很灵活,但是给代码书写者带来了不确定性。Python提供了一组内置函数方便属性操作。内置函数hasattr(object, name)用来判断对象是否包含对应的属性。如果包含,则返回True,否则返回False。内置函数getattr(object, name[, default]) 用来获取属性值。如果属性不存在,则返回default,没有指定default时,抛出异常AttributeError。内置函数setattr(object, name,

2020-12-15 23:21:14 561

原创 互联网应用扩容:应用拆分、数据库拆分、读写分离、主从同步

如何扩容应用拆分的垂直拆分将系统拆分为各种服务。使用带有服务注册、发现功能的SOA框架(面向服务的架构)来进行交互。一个功能的读写可以拆分成不同的服务。不同的服务由不同的团队维护。通过服务注册中心,服务消费者不需要进行配置更改,就可以发现新的服务提供者并使用它。数据库拆分分库,即垂直数据拆分,比如拆分为商家库、客户库、订单库。分库解决多个表之间的IO竞争、单机容量问题。分表,即水平数据拆分。分表提高了单表查询速度。先按照业务维度进行垂直拆分,不同的应用可以使用不同的数据库,再根.

2020-11-28 18:50:08 482

原创 常见的服务器集群负载均衡技术:二三四七层负载均衡,DNS、LVS、F5、nginx负载均衡

服务器集群负载均衡技术LB:load balance负载均衡器。有时也叫做director。DNS负载均衡DNS负载均衡,最基础的是轮询方式,循环返回不同的服务器IP地址。可以同时返回多个服务器IP地址,但是IP地址顺序在变化。用户会首先使用第一个IP地址进行访问。现在有了改进版本。比如AWS Route53 。DNS服务器可以检测服务器的状态。如果服务器故障了,不会告诉用户使用这个服务器。DNS服务器可以按照权重返回DNS应答。DNS服务器可以返回时延最小的那个服务器。.

2020-11-28 18:48:46 1459

原创 实现一个简单的python自动化测试框架

实现一个简单的python自动化测试框架。父类中实现runTest()方法和assertEqual()。子类编写test开头的测试函数,其中调用assertEqual()。实例化子类,运行父类中runTest()方法,执行测试函数。如何在父类中的runTest()中发现子类中的测试函数?我们使用的是子类的实例调用runTest(),所以dir()就能够知道子类中的所有名字,然后使用getattr()将名字转换成测试函数。另外在父类中实现了钩子方法setUp()和tearDown()。

2020-08-26 22:08:47 593

原创 C语言常见内存管理错误

C语言常见内存管理错误:内存没有分配就开始访问。这常常是分配内存后,没有返回值。如果内存分配失败了,就开始使用,就会发生解引用空指针。 内存没有初始化,那么其中的值是不确定的。如果程序员当做值是0来使用,就出现了错误。 内存用完没有释放。这导致内存泄露。 内存重复释放。如果这块内存已经分配给程序的其它部分,则影响了其它部分的功能。如果这块内存还没有分配给程序的其它部分,则没有危害。 释放内存后又访问。如果这块内存已经分配给程序的其它部分,那么执行写操作就影响了新使用者的功能,执行读操作,则读出了

2020-08-26 22:08:20 341

原创 python测试框架unittest源代码分析

Python3.6.3 unittest源代码分析程序入口:main.py中定义类TestProgram,它实现了运行测试的命令行程序。它不支持在代码中定义的testsuite。测试加载:loader.TestLoader将test加载到testsuite中。其中定义了discover(),用来支持用例的自动发现。因为unittest代码中有defaultTestLoader = TestLoader(),所以测试代码中可以直接使用loader.TestLoader的实例unit..

2020-07-30 21:11:56 1122

原创 selenium弹窗处理,包括Javascript弹窗、HTML弹出层和Windows弹窗

弹窗处理Javascript弹窗Javascript中有3种弹窗:alert(只有一个确认按钮)、confirmation(有确认和取消两个按钮供选择)、prompt(需要输入内容)。无法使用selenium提供的find_element_by_xx()定位到alert中的元素。Selenium提供一组统一的API处理它们,代码形式上都当做Alert的实例来处理。alert = driver.switch_to_alert()切换到当前弹出的alert。关闭了alert之后,回到aler

2020-07-15 20:16:48 4397

原创 Selenium一些特殊情况的处理:失去焦点、点击不生效、长页面处理、先触发事件才能动态加载的元素、日期输入

Selenium一些特殊情况的处理失去焦点focus有时候click()或者send_keys(),没有反应。那是因为失去了焦点。使用driver. switch_to_active_element()或者driver.execute_script("arguments[0].focus();", element)解决。点击不生效的替代办法首先使用EC.element_to_be_clickable()确认元素是clickable的。然后可以尝试如下替代方法方法1:使用回车键代替。

2020-07-15 20:16:29 6138

原创 如何提升Selenium脚本执行稳定性,selenium定位不到元素,selenium操作不了元素,元素可靠定位,元素可靠操作,JS执行未完成,alert、frame、window可靠切换,新页面加载

如何提升Selenium用例执行稳定性使用selenium会发现很多稳定性问题,有时定位不到,有时操作不了。对于不熟悉selenium的人来说是很痛苦的。有些问题增加等待时间可以减少出问题的几率,但是出了问题就增加硬性等待时间会导致案例执行时间越来越长。所以在增加等待时,应该使用显示等待,或者封装出显示等待的效果,这样一来一旦条件满足就会立刻进行后续操作。通过合理的库的封装,既提高可靠性,又不会不合理的增加案例执行时间。有些问题需要特殊处理。这里我列出项目中遇到过的稳定性问题及其解决办法。将

2020-07-15 20:03:04 2406

原创 基于nose、使用django实现的自动化测试执行平台实现Rerun Failed功能。

Windautotest是我开发的一个基于Web界面进行操作的测试用例自动化执行平台。Windautotest使用python+django在nose+unittest的基础上开发。相比于直接使用nose,使得测试执行更方便,测试结果更易于管理。需求:点击job的Rerun Failed按钮,生成一个新的job,运行当前job的失败用例。对于Rerun Failed生成的job,仍然可以执行Rerun Failed操作。思考:nosetests --with-id运行时可以生成.nos.

2020-06-29 13:02:36 376

原创 python测试框架unittest数据驱动插件ddt源代码分析

unittest需要第三方插件ddt来实现数据驱动。数据可以是列表、字典或者JSON文件。>pip install ddt进行安装下面是一个简单的使用举例。import unittestimport [email protected] TestAdd(unittest.TestCase): @ddt.data([1,2,3],[3,4,7]) @ddt.unpack def test_add(self,a,b,c): assert ...

2020-05-22 20:31:09 803

原创 实现python pytest excel数据驱动

pytest支持数据驱动基础举例:import [email protected]("a,b,c",[[1,2,3],[3,4,7]])def test_add(a,b,c):assert a+b==c执行时,将分别使用上面两组数据,执行两个test。实际中我们经常使用excel文件来提供数据。所以实现excel数据驱动。实现思路:将读取出的excle文件中的标题行中各个单元格使用逗号连接成一个字符串,数据以双重列表的方式返回,作为@pyt.

2020-05-22 12:41:45 5084 1

原创 OSPF重发布路由时E1和E2的用法

E1、E2工程意义在OSPF域外路径metric值和OSPF域内路径metic值具有可比性时,设置外部路由类型为E1,比如说重发布一个参考带宽相同的OSPF域中的路由,或者重发布时能选择出一个能对内部而言有意义的metric值。在OSPF域外路径度量值和OSPF域内路径的度量值不具可比性时,设置外部路由类型为E2。OSPF重发布BGP路由时,因为OSPF域外路径代价通常情况下远远大于OSPF域内路径代价,所以通常使用E2。E2用法用法1:根据到ASBR的路径cost值进行流量分担:对于有多个

2020-05-20 12:40:57 4924 2

使用Python Django开发web应用 示例代码 python3.6 django2.0.zip

使用Python Django开发web应用配套的示例代码 python3.6 django2.0。讲义第三页链接https://blog.csdn.net/jxzdsw/article/details/99312523。只是一个简单的blog系统的例子。我是想找到一个分享平台,并不想收取C币。但是CSDN自动设置了C币价格。我修改不了。

2019-08-12

Tensorflow+实战Google深度学习框架 加 google的python编码规范.pdf 郑泽宇 著 有书签 高清扫描版

Tensorflow+实战Google深度学习框架 加 google的python编码规范.pdf 郑泽宇 著 有书签 高清扫描版

2017-11-24

Python基础教程(第2版)P2008 Python2.5.pdf 高清 扫描版

Python基础教程(第2版)P2008 Python2.5.pdf 高清 扫描版 。作者:Magnus Lie Hetland

2017-08-24

Python3程序开发指南 第二版 高清 扫描版

Python3程序开发指南 第二版 高清 扫描版

2017-08-24

思科RIP命令手册v12.4 Cisco RIP Command Reference.pdf

思科RIP命令手册v12.4 Cisco RIP Command Reference.pdf

2011-12-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除