软件测试行业基本介绍
一、为什么需要软件测试
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(欧朋)