Shi Hai's Blog

随遇而安

《xx测试之道》阅读随笔

前有《微软的软件测试之道》和《Google 软件测试之道》,后有《阿里测试之道》,都在尝试提升软件质量和交付效率。 测试的本质 提升软件系统的质量和效能,阿里主要通过三个维度的提升来改进: 缩短反射弧(时间):测试用例向“测试金字塔”的下层迁移;提高测试并发执行的能力;通过精准测试能够自动准确地剔除无关的用例;通过测试用例有效性、代码覆盖率和业务覆盖率的准确度量帮助我们更好地进行等价类分...

2023年业内测试能力调研

测试只是一个了解业界软件技术发展的切入点,当然单纯从测试维度找提升产品/服务质量/TTM的思路不一定能直接找到可以试用的方案。另外学术界可能也有一些比较超前的理论方案,后续有时间再学习&更新。 测试维度的三段式思考: 第一段:测试方法论、测试策略、分层策略; 第二段:用例设计、维护; 第三段:和各类技术/平台/工具结合的应用,如:+CID、+云原生、+DevOps、+测试环境; ...

在菊厂八年的那些人、那些事

对自己不太长的职业生涯做个简单总结,也和团队内同学做务虚交流使用。 达尔文在《进化论》中有句名言:“能够生存下来的物种,并不是那些最强壮的,也不是那些最聪明的,而是那些对变化作出快速反应的。” 尊重不确定性 是否从不确定性角度来看待事物的发生和发展是现代科学和经典决定论的重大区别之一。牛顿经典物理学认为宇宙都是设计好的,所有事物都按照一定规律运行,而上帝不会掷骰子。牛顿经典物理学实际...

spring常见注解学习总结

@SpringBootApplication 主应用程序的配置项。 @Bean 官方介绍:In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object...

软件架构设计数字化

软件架构设计 历史背景 软件架构这个词在1969年第一次被提出,但在20世纪90年代才得到快速发展。 为什么需要软件架构设计? 在我个人看来,软件产品的进化本质和生物的进化没有本质区别,都是往成本最低,运行最高效的方向上演进。怎么算是成本最低,运行最高效呢?那就是职责拆分。在一般情况下,现在的软件产品会被分为:操作系统、编程语言、框架、中间件、各类软件方法论等。 那有些同学可能会有疑问,现在...

记一个python异常返回导致内存泄露问题

一、问题背景 原始问题的介绍见此issue。 import weakref class A: pass ref = None def x(): global ref cool_var = A() ref = weakref.ref(cool_var) assert ref() try: 1/0 except Excepti...

分表性能优化

基本概念介绍 流式查询:返回一个迭代器从而降低内存占用。 面临的问题 单个数据库有20+个分表,每个分表有2w+条记录,直接用Mybatis和Shardingsphere查询所有表中数据,服务就会长期在查询数据库,结果耗时大概需要30分钟+。 导致这个现象的原因我估计是数据层通过流式计算和归并排序算法操作防止占用大量内存却导致时间开销增加了。 技术手段 shardingSphere Shar...

spring-boot学习实践

学习中,先把能在搜索引擎上找到的信息汇总一起方便学习。 Spring WebFlux Spring框架中的响应式堆栈框架。 Reactive Programming 响应式编程是关于异步和事件驱动的非阻塞式应用。 Reactor Spring框架在内部使用Reactor来提供自身的响应式支持。 Annotated Controllers TBD Response Entity WebFl...

BDD中的step可复用性调研

一、背景介绍 BDD开发测试用例一定时间后,give\when\then语句会越来越多,这会导致BDD用例描述持续恶化,主要表现在: 开发人员的思维和表达方式不同会导致多个语句表达一种行为; 没有复用组合语句会导致测试点越多,行为描述也会越多; 本文主要尝试从业内在BDD的应用重点看一下第二个问题是否有更好的解法或者组织形式。 二、可行性分析 两种维度的复用策略没有哪种更加优秀,而是需...

用例global级资源管理

用例资源管理是用例执行中的重要如何一环,各层级的用例有效管理能促进用例的 有效执行、提升资源利用率、优化用例执行时间。 一、业内实践 1.1 k8s社区 k8s中的e2e用例是直接通过命令行或者相关的client来创建被测资源,用例执行前在beforeEach()函数中对用例前置条件判断也是通过调用client进行判断。举例详情 out, err := exec.Command("gc...