其他分享
首页 > 其他分享> > 软件测试基础理论

软件测试基础理论

作者:互联网

软件测试基础理论

1 什么是软件测试

通过手工或工具对被测对象进行测试操作,从而验证实际结果与预期结果之间是否存在差异。即从需求评审开始,到制定测试计划,测试用例设计,测试执行,再到最后测试问题的回归和关闭这一系列过程。

质量:软件开发完成经测试后,符合需求规格的程度,即满足用户需求的程度。

错误:测试过程中发现的与预期结果不符的一系列问题(不满足需求规格),以及影响用户体验和使用的任何问题。

80/20原则:80%的错误集中在20%的模块中(一个经常出错的模块,即使BUG被修复,这个模块还是可能极不稳定,产生新的BUG)

2 测试目的

用尽可能少的人力物力,找到缺陷,避免损失,降低商业风险:

3 软件测试的原则

(1)测试证明软件存在缺陷:不能证明它没有缺陷

(2)不能执行穷尽测试:具体的测试操作不可能将所有情况都一一罗列,所以测试工作肯定是有终止的时候。

(3)测试应尽早介入:一般不要在开发完成之后才执行测试,这样不利于缺陷的尽早发现。

(4)缺陷存在群集现象:对于一款软件来说核心的功能只占20%,所以在测试的时候我们会花更多的时间专门测试这些功能,因为它里面暴露缺陷的可能就会更大一些

(5) 某些测试操作依赖于特定的环境

(6)杀虫剂现象:不要过多的使用同一条测试用例来对软件进行问题查找

(7)不存在缺陷谬论:任何软件都不可能是完美的

4 软件测试分类

4.1 按测试阶段

4.1.1 单元测试

即模块测试,对程序最小模块的测试,可能是一个函数,也可能是一个类或窗口。目标是确保模块被正确的编码,使用过程设计描述作为指南,对重要的控制路径进行测试以发现模块内的错误,通常情况下是白盒的,对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早的发现和解决不易显现的错误。

4.1.2 集成测试

多个模块组装到一起进行测试,关注模块与模块间的接口。通过测试发现与模块接口有关的问题。目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构,应当避免一次性的集成(除非软件规模很小),而采用增量集成。

自顶向下集成:模块集成的顺序是首先集成主模块,然后按照控制层次结构向下进行集成,隶属于主模块的模块按照深度优先或广度优先的方式集成到整个结构中去。

自底向上集成:从原子模块开始来进行构造和测试,因为模块是自底向上集成的,进行时要求所有隶属于某个给顶层次的模块总是存在的,也不再有使用稳定测试桩的必要。

4.1.3 系统测试

把系统看成整体测试,测试依据为需求规格说明书
(1)界面/UI测试:测试页面布局是否合理,整体风格是否一致,界面文字是否正确,命名是否统一,页面是否美观,文字颜色图片的组合是否完美等。

(2)功能测试:软件呈现给用户的功能点是否正常使用,是否满足需求文档的内容。

(3)易用性测试:站在用户的角度测试软件好不好用,是否容易操作

(4)性能测试: 测试软件在不同的环境和压力下是否正常运转。

(5)安全测试:防止非法侵入的能力。

(6)兼容性测试: 软件与其他软件的兼容能力,主要指与浏览器的兼容,包括分辨率的兼容

4.1.4 验收测试

检验软件是否符合用户需求,站在用户角度测试

(1)α测试:α 是内测交流版本,通常只在软件开发者内部交流,一般该版本的BUG较多,普通用户最好不安装,α测试是由用户在开发者的场所来进行的,也可以是公司内部的用户在模拟实际操作环境下进行的测试,在一个受控的环境中进行,非正式的验收测试。

(2)β 测试:β 是公测版本,面向所有用户,通常免费发布,通过用户反馈修改细节,是在实际环境中的测试,或者公司内部人员在模拟真实环境中的测试。
由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者,开发者对系统进行最后的修改,并开始准备发布最终的软件。

(3)γ 测试: γ是候选版本,与正式软件几乎无异

4.2 按是否查看源代码

4.2.1 黑盒测试

黑盒测试只关注功能,不关注功能的具体实现方式。一般能发现功能不对或遗漏、界面错误、数据库访问或处理错误、性能问题等问题。

(1)功能测试:逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试

(2)性能测试:时间性能(事物响应时间等)、空间性能(系统资源消耗)、一般性能测试、稳定性测试、负载测试、压力测试
负载测试:通过负载测试来确定在各种工作负载下,系统各项性能指标的变化情况
压力测试:通过确定一个系统的瓶颈或者刚好不能接受的性能点,来获得系统能够提供的最大服务级别

4.2.2 白盒测试

不但关注功能,还要关注是怎么实现的,研究里面的程序结构和源代码。

4.2.3 灰盒测试

介于白盒和黑盒之间的测试,关注接口。

4.3 按是否运行

4.3.1 静态测试

不运行软件,静态观察软件是否符合预期,静态地检查程序代码、界面或文档中可能存在的错误过程。

4.3.2 动态测试

在运行过程中测试,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。

4.4 是否自动化

4.4.1 手工测试

4.4.2 自动化测试

通过程序自动测试程序是否有问题。

4.5 其他测试

4.5.1 冒烟测试

通过冒烟测试对软件最基本的流程和功能做一个粗略测试,看基本流程能否跑通。测试拿到研发的第一个版本,一般先执行冒烟测试。

4.5.2 回归测试

回归测试是指在发生修改之后,重新测试先前的测试用例,以保证修改的正确性。

回归测试场景
(1)开发修改完BUG后:
       将之前发现BUG的用例重新执行一次,从而验证该问题已修复,之后关闭对应的BUG;同时,还需要验证和此BUG有依赖关系的场景用例是否正常。

(2)上线前:

4.5.3 随机测试

对重要功能进行复测。

4.5.4 探索性测试

一边了解和学习项目,一边测试项目。

5 软件开发和测试模型

5.1 开发模型

5.1.1 瀑布模型

(1)模型阶段
在这里插入图片描述
概要设计主要关注:系统架构、模块划分、模块与模块间的接口。

详细设计主要关注:模块内部实现的逻辑和方法、类和类关系,类的设计、函数设计、各接口细节、数据库表的关系、字段关系。

(2)模型优点:

(3)模型缺点:

5.1.2 快速原型模型

(1)模型阶段
实现一个基本原型,让用户对其评价,逐步调整,使其满足最终需求(快速构建软件原型,支持用户参与)。
在这里插入图片描述

(2)模型优点:

(3)模型缺点:

5.1.2 螺旋模型

(1)模型阶段:
螺旋模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,由这4个阶段进行迭代。螺旋模型基本做法是在“瀑布模型”的每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。
在这里插入图片描述

(2)模型优点:

(3)模型缺点:

5.2 测试模型

5.2.1 V模型

(1)模型阶段:
在这里插入图片描述

(2)模型优点:

(3)模型缺点:

5.2.2 W模型

(1)模型阶段:
在这里插入图片描述

(2)优点:

(3)缺点:

6 软件产品质量模型

软件质量是软件满足各种干系人需要并提供价值的程度。软件质量相关的可测量属性通常称为质量特性。一般来说会使用三个质量模型来评估软件,分别是使用质量模型、产品质量模型和数据质量模型。

在这里插入图片描述

7 软件架构

7.1 B/S结构

在这里插入图片描述
WEB服务器软件:Apache、iis、ngnix
PHP服务软件(PHP-fpm中间件)、JAVA服务软件(tomcat中间件)

前台通过浏览器向WEB服务器发送请求,Apache若能处理请求,则处理请求后返回处理结果,若不能处理,则分配请求任务给PHP服务软件,PHP服务软件判断这一请求的合理性,若不合理则向Apache返回错误信息,若合法则由PHP服务软件处理后将结果返回给Apache,由Apache把处理结果返回给浏览器。

web服务器:一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。

PHP服务器:一般指装有apache&php&mysql这三种软件的服务器/电脑。

7.2 C/S结构

在这里插入图片描述
用户执行的操作和请求客户端可以自己处理,则不需要向数据库服务器发送请求,反之则需要向数据库服务器发送请求,待数据库软件在接收请求执行相应操作后,把结果返回给客户端。

7.3 B/S结构和C/S结构比较

8 浏览器

浏览器本身是一款安装在操作系统上的软件,一般用于浏览网页。
目前来说,市面上存在五大浏览器生产厂商,分别是IE、Firefox、Chrome、Safari、opera。
而对于浏览器这款软件来说,最核心的技术是浏览器内核

浏览器内核:

9 常见的图片格式

10 域名、服务器和URL

10.1 域名

是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。
是为了方便用户去记忆,而自己设计的一个名字,一般需要花钱购买。IP地址不方便记忆并且不能显示地址组织的名称和性质等等,通过网域名称系统(DNS)可以将域名和IP地址相互映射,使人更方便地访问互联网。

一般分为3个部分:

域名服务器(DNS):是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。把域名翻译成IP地址的软件称为域名系统。

域名解析:域名到IP地址的转换过程。

域名和服务器一样都需要花钱购买,国内常见的服务商有:万网,新网。西部数据,美橙互联等。

10.2 服务器

一种管理计算资源的计算机,它比普通计算机运行更快、负载更高、价格更贵,在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。一般来说服务器都具备承担响应服务请求、承担服务、保障服务的能力。

10.3 URL

即统一资源定位符,是用户写在浏览器地址栏的一长串字符,它由 协议://域名:端口号/路径/具体的文件名 组成

11 网站访问过程

在这里插入图片描述

step1: 在浏览器中输入URL
step2: URL通过解析找到相应的IP(查找IP首先会从本地hosts文件开始,如果找不到则去DNS服务器查找)
step3: 如果DNS找到了目标IP,浏览器先发向服务器发送一个测试请求,通过之后再发送正式请求
step4: 服务器接收到正式的请求之后,会进行验证,若验证通过,则帮我们找到当次请求想要的文件
step5:服务器开始处理我们想要的文件,在这个过程中可能会用到数据库中的数据
step6:当服务器将文件处理完毕之后,通过HTTP协议还给浏览器(此时浏览器就用自己的渲染引擎来进行渲染展示)

12 接口和功能测试关系

API接口:即应用程序编程接口(API),以HTTP协议形式提供,定义了输入、输出、功能描述的服务。

接口和客户端功能测试的关系

13 数据库和功能测试关系

标签:浏览器,模块,模型,域名,测试,软件,基础理论,软件测试
来源: https://blog.csdn.net/qq_38684868/article/details/122600695