“我”为什么做测试 本篇所指的“我”,其实不光是作者本人,而是大多数从业软件测试的人员。 什么是测试?其实关于测试的名词解释,作者不再进行阐述。...用最简短的话来描述测试,就是发现软件缺陷,并验证功能可用。 为什么做测试?...当然不是,其实有关注职位招聘的小伙伴就知道了,基本的要求就是点点点,即对业务操作能力的理解与基础测试工具的使用,之后就是稍微高级点的,早些年大家都在冲“自动化测试”、“性能测试”这样的名词,尤其是自动化...,稍微会点自动化或会做自动化的,都会给自己带来不小的薪资涨幅,不过现在看,“自动化测试”感觉是标准的测试标配了,即使你面试的是普通的测试岗位,面试官会时不时稍带会问你会不会自动化测试,会的话,会问怎么做的...本篇其实没有所谓的指导思想,看似说了一些,但好像什么都没有说,只是单纯的聊聊一些感受,也是想让同行反思一下,为什么要做测试,如何让自己的测试职业发展更好。为什么说如何让自己发展更好?
一、 测试的重要性 测试很重要!测试很重要!测试很重要!重要的事情说三遍。 场景1:每次我们写完代码后都需要编译运行,以查看应用程序的表现是否符合预期。...当你重构完了,找了公司某条业务线的 App 接入测试,点了几下发现发生了奔溃。心想,本地测试、debug 都正常可是为什么接入后就 Crash 了。...工程师自己负责的是单元测试。测试工程师、QA 负责的是集成测试、系统测试。 单元测试(Unit Testing):又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。...而 BDD 针对的是行为,所以测试范围可以再大一些,在集成测试、系统测试中都可以使用 TDD 编写的测试用例一般针对的是开发中的最小单元(比如某个类、函数、方法)而展开,适合单元测试。 ...BDD 编写的测试用例针对的是行为,测试范围更大一些,适合集成测试、系统测试阶段。 三、 单元测试编码规范 本文的主要重点是针对日常开发阶段工程师可以做的事情,也就是单元测试而展开。
来源:http://www.51testing.com/ 一、 测试的重要性 测试很重要!测试很重要!测试很重要!重要的事情说三遍。 ...当你重构完了,找了公司某条业务线的 App 接入测试,点了几下发现发生了奔溃。心想,本地测试、debug 都正常可是为什么接入后就 Crash 了。...工程师自己负责的是单元测试。测试工程师、QA 负责的是集成测试、系统测试。 单元测试(Unit Testing):又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。...而 BDD 针对的是行为,所以测试范围可以再大一些,在集成测试、系统测试中都可以使用 TDD 编写的测试用例一般针对的是开发中的最小单元(比如某个类、函数、方法)而展开,适合单元测试。 ...BDD 编写的测试用例针对的是行为,测试范围更大一些,适合集成测试、系统测试阶段。 三、 单元测试编码规范 本文的主要重点是针对日常开发阶段工程师可以做的事情,也就是单元测试而展开。
来源:http://www.51testing.com 四、 单元测试下开发模式、技术框架选择 单元测试是按照测试范围来划分的。TDD、BDD 是按照开发模式来划分的。...思想是在拿到一个新的功能时,首先思考该功能如何测试,各种测试用例、各种边界 case;然后完成测试代码的开发;最后编写相应的代码以满足、通过这些测试用例。 TDD 开发过程类似下图: ? ...先编写该功能的测试用例,实现测试代码。这时候去跑测试,是不通过的,也就是到了红色的状态。 然后编写真正的功能实现代码。这时候去跑测试,测试通过,也就是到了绿色的状态。 ...如果采用 TDD,那么之前新功能给到后,就要考虑测试用例的设计、编写了测试代码,在测试用例的保证下再去实现功能。如果遇到了技术方案的变更,之前的测试用例要改变、测试代码实现要改变。...测试方法里面的代码按照 Given->When->Then 的顺序展开。测试环境所需的先决条件准备;调用所要测试的某个方法、函数;使用断言验证输出和行为是否符合预期。
本文详细介绍了集成测试,这是软件测试的第一级。 什么是集成测试? 集成测试是软件测试的一个级别,其中将各个单元组合并进行测试,以验证它们在集成时是否按预期工作。这里的主要目的是测试模块之间的接口。...集成的含义非常简单–将经过单元测试的模块一个接一个地组合,然后测试组合单元的功能。通常,集成测试是在单元测试之后进行的。...一旦创建并测试了所有单个单元,我们便开始组合那些经过测试的模块并开始执行集成测试。这里的主要目标是测试单元/模块之间的接口。...集成测试的类型 在开始讨论可用的集成测试类型之前,我们需要了解存根和驱动程序的概念。在测试期间,有时我们会遇到某些模块仍在开发中的情况。这些用于测试目的的模块已替换为一些虚拟程序。...自上而下的集成测试 自上而下的方法从测试最顶层的模块开始,然后逐步地逐步降到最低的一组模块。测试按照软件系统的控制流程从上到下进行。
首先需要看的是测试集,这个相当于是考试的答卷,做错了那些题一目了然,通过这些数据我们能知道模型做错了那些事,强如BERT,也是可能出错的,常见的错误是这些: 标注质量。...额,可能比较少见,有的人做的测试集和训练集压根就不是一回事,值得关心。...当然了,bad case分析这块我也聊了很多,多分析能发现其中的端倪,知道模型需要什么,该怎么处理,我再放一遍在这里,希望能好好阅读。...测试集是考试题,本质是考验模型能力的,所以这里核心是要保质保量,质在于题目可靠,真的能考验出模型的真实能力,量在于统计意义,现在的指标都是用的统计指标,所以数据本身必须具有统计意义,例如某个类只有2条数据...而文章本身的输出并非是按照这个思路走,而是从一些大家经常问的点深入来讨论,希望能从我的角度和风格来思考和回答问题。
技术架构从单一的节点到多集群,业务对性能的要求越来越高,对于性能测试,有一点小的体会,后续会分多篇来聊聊。今天先说说我对性能测试的一些感观。 友情提醒,文末有福利哦!...获取扩展参数,做好预警:做一次好的、完整的性能测试,一定不是简单的给出一个TPS那么简单,对于高阶性能测试,我们都会要求测试出性能拐点在哪里,达到拐点时,瓶颈点是什么。为什么要关注这个呢?...因为从高层的角度看,他们更关注的是什么情况下,需要我做扩容,先扩什么东西,以便系统能够撑过流量的高峰,这样对业务才会更有意义。 提升各种利用率:这个其实是最后的价值。...对于业务目标,主要有两点目标: 业务稳定性:这个是我们做性能测试的基本盘,本质上我们做各类测试都是为了维护业务的稳定性,通过性能测试,系统在面对流量洪峰时,能够平稳过渡,是性能测试的最大目标。...结合一些常用的分析方法论,快速定位问题。 END 标星、点赞、关注三连走起,感谢支持。 如果想阅读更多文章,请关注我的公众号。
以下文章来源于CKL的思考空间 ,作者CKL的思考 笔者专注性能测试的时间大概有5年时间,其间也经历了性能测试主流工具从LR到Jmeter转变,监控工具从最早的Linux原生命令到界面花里胡哨的Glances...技术架构从单一的节点到多集群,业务对性能的要求越来越高,对于性能测试,有一点小的体会,后续会分多篇来聊聊。今天先说说我对性能测试的一些感观。 友情提醒,文末有福利哦!...获取扩展参数,做好预警:做一次好的、完整的性能测试,一定不是简单的给出一个TPS那么简单,对于高阶性能测试,我们都会要求测试出性能拐点在哪里,达到拐点时,瓶颈点是什么。为什么要关注这个呢?...因为从高层的角度看,他们更关注的是什么情况下,需要我做扩容,先扩什么东西,以便系统能够撑过流量的高峰,这样对业务才会更有意义。 提升各种利用率:这个其实是最后的价值。...对于业务目标,主要有两点目标: 业务稳定性:这个是我们做性能测试的基本盘,本质上我们做各类测试都是为了维护业务的稳定性,通过性能测试,系统在面对流量洪峰时,能够平稳过渡,是性能测试的最大目标。
曾几何时,我觉得很兴奋,在如此短的时间内就可以做到这样的高度,让我十分的开心。开发出的内容也完全符合校内应用的需求。我变成了一个别人眼中的“大师”。 但事情并没有往想象的地方发展。...框架用的时间久了之后就发现了一个问题:我真的有学习过吗?我学的内容真的有用嘛,这些框架内的东西能对我今后有帮助吗,当然,这种想法不是一天形成的,还有一个小的故事。...但当有一天在讲授开发经验的时候,当我当着大家的面真的静下心来写我需要展示的一个类的时候,以前用了这么多的框架,我发现在这么多人面前的我已经几乎写不出来一个正确的类了!!...于是我又开始新的一轮学习,看大量的书籍,有一天我重新打开Yii框架在我当时看起来很难理解的代码的时候我发现:我居然有点明白它的工作原理,知道整体的架构了!...我觉得已经可以了,于是就把它推了上去(ps:没有加上自动require,只是在每个文件的最上面加上了),在不断的测试之后就发现,这边有bug,那边也有!
如果你的服务请求量并不大,但 Redis 实例的 CPU 使用率很高,很有可能是使用了复杂度高的命令导致的。...同样的,当删除这个 Key 的数据时,释放内存也会耗时比较久。 你需要检查你的业务代码,是否存在写入大 Key 的情况,需要评估写入数据量的大小,业务层应该避免一个 Key 存入过大的数据量。...内存中的的数据写入磁盘,这个会加重磁盘的 IO 负担,操作磁盘成本要比操作内存的代价大得多。...下面就针对这两块,分享一下我认为比较合理的 Redis 使用和运维方法,不一定最全面,也可能与你使用 Redis 的方法不同,但以下这些方法都是我在踩坑之后总结的实际经验,供你参考。...总结 以上就是我在使用 Redis 和开发 Redis 相关中间件时,总结出来 Redis 推荐的实践方法,以上提出的这些方面,都或多或少在实际使用中遇到过。
还有一个Child的子组件,红底黑字。 那么实际渲染出的样式是什么样子的呢。如下图: ? 实际看到的效果确实蓝底白字与红底白字,为什么与写的代码有出入呢。...究其原因 为什么子组件的字体颜色不是黑色确是白色? ?...为什么同样.parent .component 和.child .component是父级覆盖子级? ?...将DOM和CSSOM合并为渲染树(rendering tree)将会被创建,代表一系列将被渲染的对象。 渲染树的每个元素包含的内容都是计算过的,它被称之为布局layout。...最后 文章首发于:为什么我的样式不起作用? 参考:浏览器渲染原理与过程 参考:CSS选择器从右向左的匹配规则 DEMO地址
问: 我有一个调用自己的函数: def get_input(): my_var = input('Enter "a" or "b": ') if my_var !...: Type "a" or "b": a got input: a 但是,如果我输入别的东西,然后输入 "a" 或 "b",我会得到这样的结果: Type "a" or "b": purple You...Type "a" or "b": a got input: None 我不明白为什么 get_input() 函数返回的是 None,因为它本应只返回 my_var。这个 None 是从哪里来的?...我该如何修复我的函数呢? 答: 它返回 None 是因为当你递归调用它时: if my_var != "a" and my_var !...Python3 documentation 因此,除了在 if 语句中调用 get_input() 之外,还需要返回递归调用返回的内容。
这段代码非常简单,就是先用mmap的方式,为该进程分配10GiB的虚拟内存,然后再用page写的方式,让操作系统为这10GiB虚拟内存,分配对应的物理内存,最后sleep,等待我们测试。...第二次执行这个程序也没问题,但奇怪的是,此时第一次执行的那个程序却被kill掉了: ? 这是为什么呢?...上面我们说到,该程序的逻辑是分配10GiB的物理内存,所以运行两次,也就是要分配20GiB的物理内存。 但在我们的测试机器上,物理内存一共才16GiB,所以,运行两个这样的进程肯定是不行的。...这也就解释了为什么上面第二次运行该程序时,mmap是没有报错的。...另外也欢迎关注我公众号,主要是结合实际,讲一些linux内核相关的知识。
前言 很早之前,就打算写这一篇文章了(其实有很多源码分析的文章打算写,但是自己太拖延了导致很多文章搁浅了)。我为什么要写这一文章呢?...事情的缘由是同事在SpringBoot项目中有一个A类继承HibernateDaoSupport,但是程序运行总是抛出没有成功注入SessionFactory的错误,后来我debug Spring源码解决了这个问题...这个错误的原因是A类的RootBeanDefinition中的autowireMode的值为0,在AbstractAutowireCapableBeanFactory类中的populateBean方法中没有执行到...return this.template; } } @Component public class MyBaseDao extends MyHibernateDaoSupport { } 3.我们运行测试用例...(这里维护的是bean和bean依赖的对象之间的关系,也就是MyBaseDao --》 MySessionFactory)中。
从 ES2015 开始,对我代码影响最多的功能是解构、箭头函数、类和模块系统。 截至 2019 年 8 月,一项新提案 optional chaining 达到了第3阶段,这将是一个很好的改进。...这就是我喜欢 optional chaining 的原因。 2.1 数组项 但是 optional chaining 功能可以做更多的事情。...接下来的任务是编写一个返回电影主角名字的函数。...defaultValue 的结果为defaultValue, 否则表达式的值为variable 的值。...为什么我喜欢它? 我喜欢 optional chaining 运算符,因为它允许从嵌套对象轻松访问属性。它可以减少通过编写样板文件来验证来自访问器链的每个属性访问器上无效值的工作。
作为站长,最不想看到的就是网站被封了,封禁不仅影响网站业务,甚至会有罚款和监禁的风险。...历史任务审核适用于中途接入 WordPress COS 插件的站长,创建一个历史审核任务就可以扫描以往所有用到的静态资源文件,避免已发布页面被封禁的风险。...上述两种审核配置都支持用户自定义审核策略,通过设置自定义策略可以定制涉黄涉政等个性化场景的审核;审核后支持按照指定的分数范围进行冻结,智能机审+精确人审的方式帮你有效避免违法内容的传播;审核结果可以通过配置的回调链接返回给用户...查询审核任务:通过发起任务时获取到的任务ID,直接查询对应任务ID的网页审核结果。审核结果中包含了审核是否成功、网页的审核处理建议、违规的图片和文字等。...,对存储在 COS 中的图片、视频等静态资源进行多场景的审核。
这段代码非常简单,就是先用mmap的方式,为该进程分配10GiB的虚拟内存,然后再用page写的方式,让操作系统为这10GiB虚拟内存,分配对应的物理内存,最后sleep,等待我们测试。...第二次执行这个程序也没问题,但奇怪的是,此时第一次执行的那个程序却被kill掉了: ? 这是为什么呢?...上面我们说到,该程序的逻辑是分配10GiB的物理内存,所以运行两次,也就是要分配20GiB的物理内存。 但在我们的测试机器上,物理内存一共才16GiB,所以,运行两个这样的进程肯定是不行的。...这也就解释了为什么上面第二次运行该程序时,mmap是没有报错的。...比如,通过修改 /proc/sys/vm/overcommit_memory 的值,可以使上面第二次执行的测试程序,在使用mmap分配虚拟内存时,就直接报错,说内存不够。
Caching可以减少对同一数据源的多个请求的可能性,因为一个查询可以受益于已针对其他查询运行和缓存的相同请求。...在云环境中,每个查询都使用自己的单独缓存进行刷新,因此查询无法受益于已为其他查询缓存的相同请求。折叠有时,Power Query的折叠层可能会根据正在下游执行的操作生成对数据源的多个请求。...隔离多个查询可以通过关闭查询过程的特定部分来隔离多个查询的实例,以隔离来自重复请求的位置。...设置Power Query编辑器无需重新连接或重新创建查询,只需在Power Query编辑器中打开要测试的查询。 如果不想使现有查询混乱,可以在编辑器中 复制 查询。...在恢复正常测试之前,请务必撤消此步骤。禁用后台分析下一步是禁用后台分析。 后台分析由“允许数据预览”控制,可在“禁用Power Query后台刷新”中所述的后台设置中下载Power BI。
我曾经是一个不测试主义者,因为我看不到测试的价值。然后,我试了一段时间,变得对它深信不疑。我收集了一些经验,当然还远远不够。这篇文章总结了一些我知道的以及我认为我知道的内容。...我不总测试我的代码,但是当我测试的时候,感觉更好。 —— 我 这是怎么一回事呢? 这,全是因为代码:本文主要关于单元测试,而不是集成测试或端至端的测试,但在某些方面也可用于其他测试。...集成测试则相反,它们包含的代码更大。 为什么这很重要? 测试可帮助你对你的代码放心。对一个稍复杂的问题写一个解决方案,然后手动测试,你只需要这么做就可以了。...测试可以锁定功能,用一种很好的方式,使得我们能够专注于“大扫除”,而不是担心破坏什么东西。 我见过一些糟糕到让人不知道它们是做什么的代码片段。...除非你需要更好地理解它们是如何工作的,否则就不要测试内部的东西。 想想当一段时间以后,代码重构的时候,会发生什么。实现应该允许在测试不失败的情况下被更改。为什么?
我的N年软件测试感悟 目录 1、前言 2、测试培训 3、工作经验 4、行业选择 5、职业发展 6、职业技能 7、学习能力 8、学历重要 9、关于副业 10、结尾 1、前言 大家好!...我是Meng 前段时间,很荣幸被一合作伙伴邀请发表一篇文章,主题为"这些年,我所从事软件测试的一些感悟",正好趁着这个机会,我也好好总结一下。...对于性能来说,我总觉得性能的坑太深,要学习的东西太多,入门倒是比较容易,JMeter、LoadRunner压完随即就可以看到一些性能的指标,但是这些指标代表什么,说明什么,这些还是得有一些网络知道、系统知识...在我的之前一家公司,公司技术总监就是从百度出来的,就是搞安全的,在百度的时候就已经是至少年薪百万了。 7、学习能力 这里所说的学习能力其实就是自控力,对于自己的能力成长来说,自控力很重要。...10、结尾 综上一些感悟是我的一些观点与心得,希望对大家有所帮助。 让我们共同努力,加油!
领取专属 10元无门槛券
手把手带您无忧上云