本文参考《软件测试实用教程》–武剑洁、《软件工程》–李爱萍、《软件工程》(第四版)–张海藩
我们在学习软件测试之前,首先要搞清楚,软件是什么?软件的开发过程,软件的生存周期以及软件开发模型。
1.软件的定义
计算机由硬件系统和软件系统组成,而软件系统又分为系统软件和应用软件。这些软件和我们生活息息相关密不可分:从window操作系统,Linux操作系统、office办公软件、腾讯QQ、英雄联盟到洗衣机等家用电器中的内嵌软件,我们每天都在使用软件,那么软件是什么呢?
IEEE为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。
由此可见,软件不止包括在计算机上运行的程序,与这些程序相关的文档一般也被认为是软件一部分。简单的说软件就是程序+文档的集合体,详细一些软件又可以可以表示成:软件(software)=程序 + 数据 (库)+ 文档 +服务,其中,
- 程序 表示能够完成预定功能和性能的指令和集合,如python程序,Java程序等,可以理解成程序员为了让计算机完成一项任务所编写出的一系列指令;
- 数据(库)是依照某种数据模型组织起来并存储在计算机中的数据集合,这里是指代码程序的输入数据、输出数据、以及程序执行过程中的中间结果数据等;
- 文档 指软件在开发、使用和维护过程中产生的文字和图形的集合,是为了便于让使用者了解程序所需的阐明性资料。如《规格说明文档》、《设计文档》、《用户手册》;
- 服务 是通过提供必要的手段和方法,满足接受服务对象(用户)需求的过程,如安装指导、售后技术支持、云端技术服务等。
因此,软件测试不但包括针对可执行程序和源代码的测试,还应该包括对数据、文档和服务的测试,软件测试工作应该贯穿在整个软件的生命周期中,在不同的软件开发阶段使用不同的测试策略,应对不同的测试内容,具有各自的侧重点。
2.软件的分类
计算机软件发展非常迅速,其内容十分丰富,要给计算机软件做出科学的分类是比较困难的。传统意义上从计算机系统角度看,软件分为两大类:系统软件和应用软件。系统软件是指管理、控制和维护计算机及外设,以及提供计算机与用户界面等的软件,如操作系统、各种语言的编译系统、数据库管理系统及网络软件