软件测试基础

软件测试行业基本介绍

一、为什么需要软件测试

1.一款软件从无到有经历了很多的阶段由不同的程序员进行开发,所以最终软件可能存在功能性的问题,所以需要测试

2.当今用户不仅仅盯着软件的功能是否可用,还关注软件是否容易上手(易用性)、执行效率是否ok、界面是否美观.......等一系列的要求,所以需要对软件进行大量的测试

二、为什么选择软件测试

1.国内软件行业对软件测试人员的需求在慢慢增加

2.有些人喜欢创造世界,所以他们成了开发,而测试人员希望这个世界更加美好

三、为什么不让开发自己做测试

1.当前行业中,有些测试人员之前就是做开发的

2.专业度:软件测试和软件开发属于软件行业当中两个不同的技术方向,所以让专人做专事对于质量更有保障

3.思维方式:在软件开发过程中,开发人员在大部分时间都在考虑如何实现软件的功能,而不会从用户的角度去奇葩的使用软件

4.测试力度:相对与开发来说软件就相当于他们的孩子,下手不会那么狠

 软件测试基本介绍

一、软件测试定义

通过手工或者"工具“对被测对象进行测试,从而验证实际结果与预期结果之间是否存在差异

二、软件测试的作用

1.通过测试工作可以发现并修复软件中存在的缺陷,从而保证软件的质量

2.测试可以记录运行当中产生的一些数据,从而为决策提供数据支持

3.测试可以降低同类型开发遇到问题的风险

三、软件测试的原则(所谓的测试原则就是在软件测试过程中需要遵守的规则)

1.测试是为了证明软件是有缺陷的

2.不能进行穷举测试:有些测试不能将所有的情况都罗列出来,但是所有的测试都有结束时间

3.缺陷的群集现象:二八原则,对于软件来说核心功能占二十,非核心功能占八十,百分之八十的错误集中在百分之二十的核心模块中

4.某些测试需要依赖特殊环境

5.测试应尽早介入

6.杀虫剂现象:同样的测试用例不能重复执行多次,因为软件会产生免疫

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

测试对象

对于当前软件行业来说,经常测试的主体部分是软件的功能,可以将软件分为三个部分:功能集合、软件使用说明书、配置数据 

对于一款软件来说,从无到有需要不同的过程,我们可以把这些过程分成不同的阶段,然后针对不同的阶段进行不同的测试

  1.需求分析阶段:各种规格需求说明书

  2.软件架构设计:API接口文档(接口测试)

  3.编码实现阶段:源代码(白盒测试,单元测试)

  4.系统测试阶段:软件功能主体的测试(现在进行的最多的一种测试,黑盒功能测试)

测试级别

  软件测试都会依据相应的开发模型,测试级别是指在这个模型中我们认为定义的开发步骤,其中对于测试来说我们最常见的一种测试级别分类如下

  1.单元测试:(unit test简称UT)在软件测试过程中,单元是指组成软件的最小的底层代码结构,一般就是类、函数、组件

  2.集成测试:(system ingertaion test 简称IT)将多个单元模块组合在一起,然后验证他们之间沟通的桥梁是否能正常工作(接口测试)

  3.系统测试:(system test 简称ST)由测试人员充当用户然后对软件主体功能进行测试(当前软件行业做的做多的一种测试)

  4.验收测试:

    α测试:内侧

    β测试:公测

    UAT测试:(user acceptance test)由客户派出对业务十分精通的人员来使用软件,从而对功能进行测试

    验收测试的核心就是让用户为当前软件“买单”

系统测试的分类

  1.功能测试:验证软件当前功能是否可用

  2.兼容性测试:验证当前软件在不同的环境下是否可用

  3.安全测试:验证软件是否只对授权用户提供功能使用

  4.性能测试:相当于当前软件消耗的资源,它的产出能力

常见的系统测试的方法

  一.按测试对象进行分类

    白盒测试:测试软件的底层代码,不在意页面是否OK,只在意软件底层功能的实现,同时逻辑正确

    黑盒测试:测试软件外在主体功能进行测试

    灰盒测试:介于白盒测试和黑盒测试之间(接口测试)

  二.按测试对象是否运行程序进行分类

    静态测试:指的就是不执行软件,如文档测试,静态页面测试

    动态测试:运行软件进行主体功能的测试

  三.按照测试手段进行分类

    手工测试:由测试人员手动的对被测对象进行验证,优点在于可以灵活的改变测试环境及操作,

    自动化测试:自动化测试主要有两种形式,一种是自己写自动化测试脚本,一种是利用第三方提供的工具进行测试,优点是可以高效率的实现一些人工无法实现的操作

软件质量

  描述当前软件是否好用,在当前的软件行业中我们采用的一套标准是基于ISO组织指定的,需要了解软件质量的六大特性

    1.功能性:软件功能满足用户的显示和隐示的功能

    2.易用性:软件易于学习,容易上手

    3.可靠性:软件必须实现需求当中指明的具体功能

    4.效率性:类似于软件性能

    5.可维护性:要求软件具有将缺陷修复之后继续使用的功能

    6.可移植性:当前软件可以从一个平台移植到另一个平台可以使用的功能

    (功能靠用,效率可“以”)

软件测试流程

  1.需求分析:

    (1)当前阶段的核心目的就是要梳理我们需要设计的点是什么

    (2)需求的来源:需求规格说明书、API文档、竞技产品分析、个人经验

  2.设计测试用例

    (1)用例就是用户为了测试这个软件某个功能而执行的操作过程

    (2)设计测试软件的方法(等价类划分、因果图、场景法、正交验证、边界值、判定表)

  3.评审测试用例:对当前的用例进行审核,删除多余,增加没有的

  4.配置环境:

    (1)环境:指的就是当前被测对象运行所需要的执行环境(一般情况下都是使用一键安装的集成环境)

    (2)环境分类:操作系统+服务器软件+数据库+软件底层代码的执行环境

  5.执行测试用例

    (1)一般在执行测试用例之前,我们先做一个冒烟测试,这种测试的核心就是对软件的核心功能或者主体流程进行验证,如果冒烟测试过程有问题,则可以将此版本退给给开发

    (2)如果冒烟测试通过,才进行全面的测试

  6.回归测试及缺陷跟踪

    回归测试:当我们将某个缺陷提交给开发,由开发进行修复,修复完成之后,测试人员再次对此功能进行验证

    缺陷跟踪:指的就是测试人员发现缺陷后,对其状态的跟踪

  7.输出测试报告

    将当前测试过程中产生的数据进行可视化的输出,方便其他人查看

  8.测试结束

    将整个测试过程中产生的文档进行整理归档,方便后续版本使用

软件架构

  1.所谓的软件架构可以理解为是指导我们开发的一种思想,目前常见的两种架构就是B/S和C/S两种

    B-browser浏览器

    C-clent客户端

    S-server服务器

  2.两种架构的比较

    标准:相对于C/S架构的软件,B/S架构的软件两端,都在使用成熟产品,所以B/S架构显得标准一些

    效率:相对于B/S架构来说,C/S架构的软件的客户端会分担一些存储功能,执行效率更高一些

    安全:BS架构中的数据传输是依靠HTTP协议进行传输,而HTTP协议又是明文传输,可以被抓包,所以相对一cs架构来说不那么安全

    升级:BS架构只需要在服务器端进行数据的更新,前台在浏览器中进行刷新页面就可以完成跟新,而CS架构就需要将两端都进行更新

    开发成本:相对于BS架构来说,CS架构软件中的客户端需要进行开发,所以成本更高一些

浏览器基本介绍

  1.浏览器是什么

    浏览器是一款安装在系统上的软件,给用户提供浏览网页的服务

  2.五大浏览器的生产厂商

    IE(微软)

    chrome(谷歌)

    Firefox(火狐)

    Safarl(苹果)

    Opera(欧朋)

      软件测试基础