分类 自动化测试 下的文章

介绍过去几十年中,基础系统软件和专业应用软件的规模已经发展到超大型的规模,质量要求也是极度的高,比如数据库(比如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,德国政府的...

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

介绍随着AI的飞速发展,AI已经使用到许多软件系统中,也逐步的应用到软件测试的工作中,并且利用各种AI相关的技术来辅助测试工作也是未来一个测试趋势。当前AI的主要几个应用方向包括,视觉系统,语音系统,决策系统,自然语言处理系统和大数据系统,因此在测试辅助工作中其最主要的方面包括:基于业务流程、被测系统内容、测试用例和测试数据的学习,测试用例和测试数据的生成,自动化测试代码的生成,测试中的视觉识别和NLP,自动化探索性测试,大规模测试日志和结果分析,缺陷定位等等。其中视觉测试,测试日志和结果学习,以及缺陷定位都已经有比较成熟的商业产品,但是相应的成熟的开源系统还暂时没有。而通过相应的学习,...

介绍随着自动化测试方法和技术的快速发展,自动化测试的的直接开发难度越来越小,但是由于其规模越来越大,测试类型和测试基础设施也越来越多,导致整体开发和实施自动化测试的复杂度是在逐渐增加的。对于大型项目,相对大量不同类型的测试和测试基础设施,专注于测试分析和测试设计,并根据测试策略和计划实施测试工作,包括测试分层,测试赋能,测试前移,开发自动化测试等,这些才是主要也更为重要的工作。由于很多公司的测试资源都是相对较少的,所以让有限的测试资源能尽可能全部的投入到这些重要的工作里面,则可以得到更多更有效的测试用例和测试结果,更好的体现测试的价值。比如TDD这样的技术,就可以使用更多更有效的测试用例...

随着Web系统的大规模发展,Web API已经成为了一种广泛使用的技术,再加上微服务和云系统的普及,Web API的数量呈几何增长。比如在一个大型Web系统中,各个子系统或者依赖系统之间一般都使用Web API来集成,从而导致开发不同子系统或者依赖服务的团队之间也存在不少问题。其中最大的四个问题是:团队之间业务和技术集成沟通困难难以快速响应外部需求变化开发流程责任链混乱Web API部署到测试环境后才发现集成问题这四个问题都属于集成和变更管理的问题,首先团队之间业务和技术集成沟通困难主要是指没有明确的集成沟通流程,那么团队之间在沟通集成业务和技术的时候则容易混乱不清,遇到各种困难。所以需...

问题最近几年虽然微服务十分火热,但是仍然有不少人不喜欢微服务,甚至抵制它。其中最主要的原因就是其成本高,难度大。就困难而言,主要是遇到了一些不易解决的问题,其中包括以下三个与测试数据和测试环境有关的问题:问题一:测试环境被多个团队共同使用在大规模的微服务系统中,某些核心服务很多时候都是会被多个团队在共同调用,并且它可能也有多个依赖服务。而当一个服务的某个测试环境被多个团队(服务)共同使用的时候,主要会存在以下两个困难点。1、同一测试数据可能会被不同的团队修改。有些团队通过创建多套测试环境来解决这个问题,但是这样的成本很高。对于很多技术强大的互联网公司,可以通过 Docker 等技术手段来...

起因在前两篇《TDD之让我们再聊聊TDD》 和《 TDD之让我们再聊聊TDD(续)》 中我们聊了很多TDD理论和实践相关的疑惑,其中包括TDD的分类,选择以及其实施步骤。最近TDD相关的培训和讨论也越来越多,还提出了很多独特的观点,比如:软件没有做好就是因为TDD没有做好TDD没有做好所以软件也做不好学好TDD靠多多练习就可以了,不用学习其理论知识开发应该自己理解业务,并提炼测试(需求)点来实施TDD开发只要做好TDD,就不需要其他人测试了等等对于这些观点我有不同的看法,比如我在第一篇讨论中就提到,TDD不是银弹,所以软件没有做好的原因是很多的,也不是靠TDD做好了就一定能做好。其次学习...