刘冉 发布的文章

测试数据是测试用例执行的前提条件之一,也是测试分析与设计的基础之一,比如等价类,边界值都是靠不同的测试数据来体现不同的测试用例和测试场景。如果把测试步骤比喻成测试用例的骨架,那么测试数据就是测试用例的血液,只有当测试用例和测试数据一起才能形成一个好的测试用例。测试数据的现状测试数据是一个经常被测试人员忽视的地方,绝大部分商用软件系统的功能测试中的测试数据都是靠测试人员通过分析和设计,手动生成的测试数据。但是有些特殊的软件系统,比如一些复杂的网络系统,一些复杂操作系统,一些复杂的硬件系统等,由于测试数据的数量巨大,并且类型众多,所以一般需要靠特定的数据系统来自动生成测试数据。并且对于一些特...

软件自动化测试的概念“什么是软件自动化测试?”也许很多人的回答是:“使用自动化测试工具或者编写自动化脚本来自动化测试软件”,还有一些权威网站,比如WikiPedia是这样定义的:“在软件测试中,自动化测试指的是使用独立于待测软件的其他软件来自动执行测试、比较实际结果与预期并生成测试报告这一过程。在测试流程已经确定后,测试自动化可以自动执行一些重复但必要的测试工作,也可以完成手动测试几乎不可能完成的测试。对持续交付和持续集成的开发方式而言,测试自动化是至关重要的。”这些回答都没有错,都说到了基本的关键点上。但是自动化测试不仅是编写自动化测试代码和使用自动化测试工具这么简单,就像软件开发本身...

什么是测试分析与测试设计测试分析和设计在软件测试中运用十分广泛,也十分重要,是软件测试的基础技能。如果没有测试分析与测试设计,就无法得到有效的高覆盖的测试用例,从而导致测试工作无法有效完成,质量也无法得到有效度量。如果质量无法度量,首先是团队和管理人员无法对软件的质量有信心,其次也无法发现软件系统的缺陷(defect),从而导致软件系统在线上出现问题的概率大大增加。1、 测试分析首先测试分析是一个分析过程,它会评估并定义测试的目标和产品的风险,并定义出成功达到目标的评估方法。最后它包含了以下重点工作:测试和质量的详细级别系统的复杂程度和开发和发布的流程项目和产品的风险哪些需要被测试和怎么...

1. 培训无用培训无用论是现在很多技术类企业遇到的现实问题,不管是内部培训,还是外部培训,还是各种技术大会之类的快速培训,总是发现培训之后学员还是不懂,还是不知道怎么做,但是公司的培训预算又不得不使用,导致很多培训无用。培训无用论的本质是培训的目标没有达到,那培训的目标到底有哪些呢?我总结了以下几个目标:1.1 不知道自己不知道 -> 知道自己不知道通过培训探索式的发现自己还有哪些不知道的知识和领域,从而可以选择学习和发展的方向。这类目标主要是通过一些技术大会可以达到。1.2 知道自己不知道 -> 知道自己知道当明确自己的学习和发展方向后,通过特定的培训学习自己了解的知识体系...

Part INowadays, there are a lot of discussions about software testing and quality in the industry and from where a lot of neologisms are created, such as de-testers, uselessness of testers, technicalization of testing, testing engineering, testing and quality empowerment, agile testing, continuou...

1 介绍随着全球、全产业数字化需求的进一步增加,越来越多传统行业和复杂业务都转向了数字化。要完成数字化转型,软件系统一般是必不可少的,但是对于很多传统行业中的复杂业务,都需要大型的软件系统。而大型的软件系统一般都是需要大规模的开发团队来进行开发。传统的瀑布模型看起来似乎非常适合大型项目的开发,但是随着软件危机的出现,软件研发专家提出了敏捷软件开发,用于应对模糊不清和不断变化的业务需求,尽早、快速和持续验证开发中的软件功能。但敏捷开发的特性和实践更适合于中小规模团队,而在大规模团队中会遇到很多问题和痛点。比如在敏捷开发中的测试实践,一般并不依赖独立的测试团队,QA人员需要加入到交付团队进行...

引言软件质量一直是一个争议不断的概念,也是一个百花齐放的领域。现在最为常见的分类是将其分为外部质量和内部质量,而外部质量又可以分为功能质量和非功能质量。其中外部质量传统意义上最被大部分人关注的部分,而外部质量中功能质量最先被体现出来,所以最被看重,然后非功能质量只有在某些特定的情况体现出来,所以重要性次于功能质量。其次最不被看重的则是内部质量,因为它很难在短时间体现出来,只有在长时间的项目开发或维护中才慢慢显现出来,导致最不被人看重。但是真实的情况是外部质量和内部质量是相辅相成的,特别是在大型的长时间的项目中,它们的关系尤其紧密,已经到了鱼水不分的阶段。并且由于质量的复杂性,必须通过一个...

介绍过去几十年中,基础系统软件和专业应用软件的规模已经发展到超大型的规模,质量要求也是极度的高,比如数据库(比如Oracel DB,Postgre DB等),操作系统(Linux,Windows,Android,iOS等),虚拟平台(JVM,.NET Framework 等),科学与工业软件(MatLab,AutoCAD,Cadence,PSCAD等)都实施了大规模自动化测试的。并且随着软件系统规模的不断增加,自动化测试的规模也会不断增加。随着中国软件的崛起,出现了越来越多的国产基础系统软件和专业应用软件,而这些软件势必需要实施大规模自动化测试。针对大规模自动化测试,一般都容易忽略它是一...

介绍模糊测试是渗透测试中最为常用的一种测试方法,在业界被公认为是强制发掘安全漏洞的利器。它是一种构造大量非法或者随机输入来让软件系统暴露问题的艺术和科学,通过向应用提供非预期的输入并监控输出中的异常来发现软件中的故障(faults)的方法。所以它并不是很多人眼中的简单的随机测试,而是有规律可循,并且可以建立模型的专项测试。模糊测试能发现多种不同类型的安全漏洞,其中包括 SQL注入,目录遍历/弱访问控制,弱认证,弱回话管理,缓冲区溢出,XSS攻击,远程代码注入,远程命令执行,DoS等各种常见的安全漏洞。比如针对SQL注入,运用模糊测试去构建大量常规或者变异的注入字符串,并使用其对于被测系统...

前提在前一篇文章《契约测试理论篇》中,详细阐述了契约测试解决的问题,工作原理以及主要的一些实践等。但是如何真正的实现一套契约测试,仍然需要了解和学习更多细节步骤才能完成。现在我们就来看如何实现一套完整的契约测试。由于契约测试的特殊性,很难手动执行,所以一般情况下它都是通过自动化的方式来实施。业界有多个开源免费的契约测试自动化框架,其中最为常用的就是Pact 和 Spring Cloud Contract,并且契约测试也分为基于消费者驱动的契约测试(Consumer Driven Contract Test,即CDCT)和基于提供者驱动的契约测试(Provider Driven Contr...