极狐GitLab自动化测试指南05——UI测试

1 理论篇

1.1 什么是UI测试

WIKI百科对于UI测试的解释是:

图形用户界面测试是测试产品的图形用户界面(GUI)以确保其符合其规格的过程。这通常是通过使用各种测试用例来完成的。

按照UI测试的目的,可分为逻辑测试和视觉测试:

阅读更多

极狐GitLab自动化测试指南04——单元测试

1 理论篇

1.1 什么是单元测试

WIKI百科对于单元测试的解释是:

单元测试又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。

熟悉敏捷开发,尤其是XP极限编程的小伙伴对单元测试应该不陌生,XP是TDD(测试驱动开发),这里面的测试就是指单元测试。

阅读更多

极狐GitLab自动化测试指南03——性能测试

1 理论篇

1.1 什么是性能测试

WIKI百科对于性能测试的解释是:

性能测试用于评估和确定系统在特定工作量下的响应和稳定方面的性能。可以用于调查、测量、验证系统的其他质量属性,例如可扩展性,可靠性和资源使用情况。

性能测试按照测试目的不同,可分成不同类型,常见的类型有:

阅读更多

极狐GitLab自动化测试指南02——接口测试

1 理论篇

1.1 什么是接口测试

WIKI百科对于接口测试的解释是:

接口测试是软件测试的一种,它包括两种测试类型:狭义上指的是直接针对应用程序接口(下面使用缩写API指代,其中文简称为接口)的功能进行的测试;广义上指集成测试中,通过调用API测试整体的功能完成度、可靠性、安全性与性能等指标。

接口测试根据其测试目的不同,来决定测试人员和测试方法:

阅读更多

极狐GitLab自动化测试指南01——软件测试综述

1. 软件测试发展

WIKI百科对于软件测试的定义是:

在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

软件测试是伴随着计算机和软件开发的发展而发展的,有记录的信息可以追溯到1958年的美国第一个载人航天计划——水星计划,在该计划中首次描述了软件测试团队及其工作内容。从软件测试出现到现在,大致可分为五个阶段:

  1. 调试为导向:20世纪50年代初期,当时还没有明确测试(Testing)和调试(Debugging)之间的区别,所以也没有测试或测试人员的概念。开发人员主要是以调试为主,验证程序是否符合预期。

  2. 证明为导向:1957年,Charles L Baker在对Dan McCracken的著作《Digital Computer Programming》进行评审时,提出了测试的概念,并对调试和测试进行了区分:

    • 调试(Debugging):确保程序符合开发人员的预期。
    • 测试(Testing):确保程序符合功能需求的预期。

    1957年到1978年,软件测试的主要目标是确保软件满足功能需求,也就是我们常说的“做了正确的事情”。

  3. 破坏为导向:1979年,Glenford J. Myers在《The Art of Software Testing》一书中阐述了一个成功的测试用例是检测到尚未发现的错误。说明测试不仅要证明软件做了正确的事情,也要保证它没做不该做的事情。这也使得软件测试和软件开发独立开来,测试需要更为专业的人员进行,毕竟开发人员在心理上总是不愿意给自己开发的软件找错。

  4. 评估为导向:1983年,出现了大名鼎鼎的V&V(验证和确认)理论,也就是现在测试人员熟悉的V模型,软件测试被应用在整个软件生命周期(SDLC)中。 这段时期软件测试的重点是检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别,以及通过测试来评估和衡量软件质量。

  5. 预防为导向:1988年至2000年提出了一种新的测试思路。代码被分为可测试的和不可测试的,可测试的代码比难以测试的代码更少,所以测试的重点应该是在代码级别防止缺陷。20世纪的最后十年出现了探索性测试,测试人员探索并深入了解软件,试图找到更多的错误。2000年前后也出现了测试驱动开发(TDD)和行为驱动开发(BDD)等新概念的兴起。而2004以后,伴随敏捷开发模式的推广,自动化测试工具和持续集成等技术的应用,都体现出人们不再满足于传统的、后置的仅保证功能正确的软件测试,而是希望尽早的、高效的、全面的发现和识别问题。

阅读更多