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...

Web Accessibility 介绍Accessibility测试是属于可用性测试(Usability Testing)中的一种测试类型,它主要是测试软件系统是否有方便让残疾人使用的能力,是要保证残疾人和弱势群体,在任何时间、地点、设备,都能平等的、便利、无障碍地获取信息、利用信息。这些能力包括每个输入框和按钮有特定的标签让阅读软件可以阅读这些UI组件,这样可以方便盲人使用;UI界面上的颜色和对比度需要足够明显,这样方便色弱的人使用等。不同的国家和组织制定了大量不同的Web Accessibility标准,比如美国政府的标准 Section 508 legislation,德国政府的...

前言当前业界对于软件测试和质量相关的讨论非常多,各种不同的声音也层出不穷,比如去测试人员、测试人员无用论、测试技术化、测试工程化、测试与质量赋能、敏捷测试、持续测试、全程自动化测试等等。可见测试工作和专业的测试人员已经处于了一个很大的漩涡里面。但是只要一个项目追求高质量,那么它一定需要实施大量系统化的专业的测试和质量工作。而这些大量系统化的测试与质量工作一定需要拥有专业知识的人员来做。虽然一些互联网公司或者某些项目号称可以在没有专业QA的情况下成功交付了,但是他们是基于一定的前提条件的,比如项目规模不大,团队的BA和Dev也拥有专业的测试与质量能力,他们也愿意做测试与质量相关的工作,并且...

前言在以前传统的软件开发流程中,大部分项目都是使用瀑布模型来进行开发。瀑布模型中最为典型的一个步骤就是将大规模的测试工作放在软件功能开发完成之后。但是随着软件规模的增大和业务需求的不确定增多,测试工作越来越困难,成本也越来越高,导致测试效率越来越低。并且随着公司对于研发效能的追求,所以业界有些公司发起了去测试化的活动,并且裁掉大量的在传统研发流程中只做手动测试的测试人员。那么在当前这样的情况下,测试人员应该如何体现自己的价值,并配合研发效能的改进,是一个需要重要关注的一个问题。在各种测试方法和实践中,测试左移也许是最有效配合研发效能的一种方法和实践。什么是测试左移测试左移并不是全新的测试...

介绍测试右移是DevOps中一项非常重要的工作。随着DevOps的兴起,不仅研发人员需要参与到Ops的工作中去,测试人员也是需要加入进去,参与产品环境中各种测试与质量相关的工作,从而尽可能的保证软件系统在产品环境中的质量,包括正确性,稳定性等。其中产品环境中关于测试与质量相关的工作并不少,但是由于传统的软件开发中,开发和测试人员并不负责产品环境的维护等工作,所以也很少关注产品环境中的质量。导致测试人员只需要负责测试环境的相关测试和质量工作,并把产品环境的测试与质量工作交给了运维人员负责,从而导致当产品环境出现质量问题的时候很难在第一时间发现,甚至需要等很长时间,或者已经造成了大量损失的时...