文章目录
- 一、测试基础
-
- 1、什么是软件测试
- 2、软件测试的目的、意义
- 3、测试原则
- 4、测试对象介绍
- 5、测试级别
- 6、系统测试分类
- 7、常见的系统测试方法
-
- 1)按测试对象进行分类
- 2)按测试对象是否执行进行分类
- 3)按测试手段进行分类
- 二、软件质量
-
- 1、软件质量
- 2、软件测试流程
- 3、常见的软件架构
-
- 1)两种架构的比较
一、测试基础
1、什么是软件测试
两个依据(需求、测试用例),两个方法(手工、自动),一个对比(预期结果比实际结果的对比)
2、软件测试的目的、意义
初期:尽量多的发现缺陷生成相关规范
中期:尽量早的发现缺陷
后期:尽量预防问题,通过以往的经验积累
控制成本(贯穿始终)尽量少的时间和人力发现更多的缺陷
3、测试原则
所谓测试原则指的是我们在执行测试工作时必须要遵守的一些规则
- 测试证明软件存在缺陷:无论执行什么样的测试操作都能证明当前软件是有缺陷的
- 不能执行穷尽测试:有些功能是没有办法将所有的测试情况都罗列出来,所以任何的测试操作都有结束的时间
- 缺陷存在群集现象:对于软件功能来说,核心功能占20%(比如 QQ),非核心是80%(QQ炫舞等衍生品)。在实际工作中我们会集中测试20%的核心功能,所以这个部分发现缺陷的几率就会高于80%。因此我们就会遇到缺陷都集中在20%功能模块里的现象。
- 某些测试需要依赖特殊的环境:例如ipthone手机在寒冷的区域会出现异常关机,是因为当时测试时未在这种环境下测试
- 测试应尽早介入:为了更多的发现和更好的解决软件中的缺陷,我们追求测试工作尽早的开展
- 杀虫剂现象:同样的一个测试用例不能重复的执行多次,因为软件会对它产生免疫;即对于某个出现问题,开发人员会就这个问题去解决,所以测试时需要换为同一类型的另外的问题测试
- 不存在缺陷谬论:任何软件不可能是完美的
4、测试对象介绍
对于当前的测试行业来说我们最经常测试的主体就是软件(主体功能),但是需要我们明白的是一个软件也不仅仅只有功能需要测试。
我们可以将软件分为三个部分组成:功能集合、使用说明书、配置数据
对于一款软件来说从无到有需要不同的过程,我们可以将这个过程分为不同阶段,然后每个阶段都会有相应的测试对象
下列为各个阶段对应的测试对象:
- 需求阶段:各种需求规格说明书(这个过程分析要实现什么功能,这些功能在现有的资源上是否可以实现)
- 软件架构设计:API接口文档(接口测试)
- 编码实现阶段:源代码(白盒测试、单元测试)
- 系统功能使用:软件功能主体(当前行业做的最多的一种测试)
5、测试级别
软件开发都会依据相应的开发模型,在这个开发模型中会有人为定义的开发步骤,我们把这个开发步骤称为测试级别。
常见的级别分类为:
- 单元测试(UT unit test):在软件测试中,单元指的是组成软件最小的底层代码结构,一般就是类、函数、组件
- 集成测试(IT ingertaion test):将多个单元块组合到一起,然后验证它们之间沟通的“桥梁”是否能正常工作(接口测试)
- 系统测试(ST system test):这是当前行业做的最多的一种测试,由测试人员充当用户然后对软件功能主体进行测试
-
验收测试:
- alpha测试–内测
- beta测试–公测
- UAT测试–由客户派出对于业务非常精通的人员来使用该软件,从而对功能进行测试
- 验收测试的核心就是让用户为当前软件’买单‘
6、系统测试分类
- 功能测试:验证当前的软件主体功能是否可用
- 兼容性测试:验证当前软件在不同的环境下是否还可以使用(不同操作系统中、不同终端上、不同浏览器)
- 安全测试:验证软件是否只是对授权用户提供功能使用
- 性能测试:相对于当前软件消耗的资源,它的产出能力
7、常见的系统测试方法
1)按测试对象进行分类
-
白盒测试:
- 指的是把盒子打开,研究里面的源代码和程序结构
-
黑盒测试:
- 又称数据驱动测试,完全不考虑程序内部结构和内部特性,注重于测试软件的功能需求,只关心软件的输入数据和输出数据
- 灰盒测试:介于两者之间(接口测试)
- 上述三种方法当中的“盒”指的就是被测对象
2)按测试对象是否执行进行分类
- 静态测试:指的就是测试不可行的(测文档)
- 动态测试:将软件运行在真实的使用环境中进行测试
3)按测试手段进行分类
- 手工测试:由测试人员手动的对被测对象进行验证,优点可以灵活的改变测试操作及环境。
- 自动化测试:所谓自动化主要有两种形式,一种是自己写测试脚本,另外一种就是通过第三方的工具对被测对象进行测试。优点就是可以高效率的去执行一些人工无法实现的操作
二、软件质量
1、软件质量
描述当前软件是否好用,在当前的软件行业里我们所采用的一套标准是基于ISO组织制定的。
需要我们记忆的就是软件质量的六大特性:
- 功能性:软件需要满足用户显式或隐式的功能
- 易用性:软件易于学习、易于上手使用,容易吸引用户
- 可靠性:指的就是软件必须实现需求中指明的功能
- 效率性:类似于软件的性能
- 可维护性:要求软件具有将某个功能修复之后还可以继续使用的功能
- 可移植性:当前软件可以从一个平台移植到另一个平台上使用的能力
功能靠用,效率可以
2、软件测试流程
根据团队、公司的习惯,业务流程的不同,软件测试流程都不同。
下面为尽可能多的流程
-
需求分析
- 当前阶段的核心目的就是梳理清楚我们需要设计的点是什么
-
设计用例
- 用例就是用户为了测试软件的某个功能而执行的操作过程
- 设计用例是有方法的(等价类、边界值、判定表。。。。)
- 评审用例:对当前用例进行添加或者删除
-
配置环境
- 环境:指的是当前被测对象运行所需要的执行环境,作为测试人员需要具备配置环境的能力(一般情况下都会使用一键安装的集成环境)
- 环境分类:操作系统、服务器软件、数据库、当前软件底层代码的执行环境
-
执行用例
- 一般在执行用例之前我们会做一个冒烟测试(这种测试的核心就是快速对当前软件的核心功能或者主体执行流程进行验证,如果冒烟测试阶段有问题,则可以将此版本回退给开发)
- 如果冒烟测试通过那么才会开展全面的测试
-
回归测试及缺陷跟踪
- 回归测试指的是当我们将某个缺陷提交给开发之后,由他们进行修复,修复完成之后需要测试人员再次对其进行测试
- 缺陷跟踪:指的就是当测试人员发现某个缺陷之后需要一直对其进行状态的跟踪
-
输出测试 告
将当前的测试过程中产生的数据进行可视化的输出,方便其他人去查看 -
测试结束:
将整个测试过程中产生的文档进行整理归档,方便后续版本使用
3、常见的软件架构
所谓的软件架构我们可以理解为是用来指导我们软件开发的一种思想,目前来说最常见的两种架构模式就是B/S 、C/S
B/S:淘宝
C/S:王者荣耀,QQ
1)两种架构的比较
-
标准
相对于C/S架构,B/S架构两端都是使用现成的成熟产品,所以B/S会显示的标准一些
(比如说淘宝为B/S架构,浏览器和服务器都是现成的,但是C/S架构中的客户端可以自定义开发,所以相对于B/S现成来说,不那么成熟标准) -
效率
相对于BS架构来说,CS中的客户端可以分担一些数据的处理,因此执行效率更高一些(比如断 之后,打开淘宝什么都没有,但是打开微信或者QQ还有数据) -
安全
BS架构当中的数据传输都是以HTTP协议进行的输出,而HTTP协议又是以明文传输,可以被抓包,所以相对于CS架构来说,BS就是不那么安全 -
升级
BS架构只需要在服务器端将数据更新,前台只需要刷新页面就可以,CS架构两端都需要更新 -
开发成本
相对于BS架构来说,CS架构中的客户端需要自己开发,所以开发成本相对来说高一些
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!