软件测试的定义
通过手工或工具对“被测对象”进行测试操作,从而验证实际与预期之间是否存在差异
软件测试的作用
1.通过测试发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心。
2.测试可以记录软件运行过程中产生的一些数据,从而为决策提供数据支持。
3.测试可以降低同类型产品开发遇到问题的风险
测试的原则
1.证明软件存在缺陷:无论执行什么样的测试操作都能证明当前软件是有缺陷的。
2.不能进行穷尽测试:不可能将所有的测试情况都列出来。
3.缺陷存在集群现象:对于软件功能说,核心功能占 20%,非核心是 80%。在实际工作中 我们会集中测试 20%的核心功能,所以这个部分发现缺陷的几率就会高于 80%。因此我们我 们就会遇到缺陷都集中在 20% 功能模块里的现象。
4.某些测试需要依赖特殊的环境
5.测试应尽早介入:为了更多的发现和更好的解决软件中的缺陷,测试工作尽早。
6.杀虫剂现象:同一个测试用例不能重复执行多次,因为软件会对他免疫。
7.不存在缺陷谬论:任何缺陷不可能是完美的
测试对象的介绍
1.需求分析阶段:各种需求规格说明书
2.软件架构设计:API接口文档(接口测试)
3.编码实现阶段:源代码(白盒测试、单元测试)
4.系统功能使用:软件功能主体
测试级别
1.单元测试(UT unit test):在软件测试中单元指的就是组成软件最小的底层代码结构,一般就是类、函数、组件(一般是开发人员测试)
2.集成测试(IT system ingertaion test):将多个单元模块组合在一起,然后验证他们之间沟通的“桥梁”是否能正常工作(接口测试)
3.系统测试(ST system test):做的最多的测试,由测试人员充当用户,对软件的功能主体进行测试。
4.验收测试:就是为了让用户买单
(1) α测试(内测)
(2) β测试(公测)
(3) UAT测试(user acceptance test):由客户派出对于业务非常精通的人员来使用该软件,从而对功能进行测试。
系统测试分类
1.功能测试:验证当前软件功能是否可用
2.兼容性测试:验证当前软件在不同的环境下是否可用
3.安全测试:验证软件是否只对授权用户提供功能使用
4.性能测试:相对于当前软件消耗的资源,他的产出能力
常见的系统测试方法
1.按测试对象分类
a.白盒测试:测试代码
b.黑盒测试:看功能是否可用
c.灰盒测试:介于两者之间
2.按测试对象是否执行分类
a.静态测试:测试不执行
b.动态测试:将软件运行在真实的环境中测试
3.按测试手段分类
a.手工测试:优点:可以灵活的改变测试操作及环境
b.自动化测试:一种是自己写测试脚本,一种是通过第三方工具对被测对象测试。优点:高效率的执行一些人工无法实现的操作。
软件质量
6大特性:
1.功能性:软件需要满足用户显式的功能
2.易用性:易于学习和使用
3.可靠性:软件必须实现需求当中指明的具体功能
4.效率性:软件的性能
5.可维护性:软件要求某个功能修复之后继续使用的能力
6.可移植性:当前软件可以从一个平台移植到另一个平台使用的能力
软件测试流程
1.需求分析
(1)当前阶段的核心目的就是梳理清楚我们需要设计的点是什么
(2)需求来源:需求规格说明书、API文档、竞品分析、个人经验
2.设计用例
(1)用例就是用户为了测试软件的某个功能而执行的操作过程
(2)设计用例是由方法的(等价类、边界值、判定表)
3.评审用例
对当前的用例进行添加或者删除
4.配置环境
(1)环境:指的就是当前被测对象运行所需要的执行环境,做为测试人员需要具备配环境的能力
(2)环境分类:操作系统+服务器软件+数据库+软件底层代码的执行环境
5.执行用例
(1)一般在执行用例之前会做一个冒烟测试,这种测试的核心就是快速的对当前软件的核心功能或主体执行流程进行验证,如果冒烟测试阶段有问题,则可以将此版本回退给开发
(2)如果冒烟测试通过那么才会展开全面的测试
6.回归测试及缺陷跟踪
(1)回归测试指的是我们将某个缺陷提交给开发之后,开发进行修复,修复完之后需要测试人员再次进行测试
(2)缺陷跟踪:从发现缺陷到修复缺陷需要一直跟踪状态
7.输出测试报告
将当前测试过程中产生的数据进行可视化输出,方便其他人查看
8.测试结束
将整个测试过程中产生的测试文档进行整理归档,方便后续使用
软件架构
软件架构可以理解为是用来指导我们软件开发的一种思想。目前来说最常见的两种架构模式 B/S C/S
两种架构的比较
(1)标准:相对于C/S架构来说,B/S架构的两端都是使用现成的成熟产品,所以B/S会标准一些
(2)效率:相对于B/S架构来说,C/S中的客户端可以分担一些数据的处理,因此执行效率会高一些
(3)安全:B/S架构当中的数据传输都是以HTTP协议进行的传输,而HTTP协议又是明文输出。所以C/S相对安全一些
(4)升级:B/S架构只需刷新页面就可以升级,C/S架构要将两端都进行更新
(5)开发成本:相对于B/S架构来说,C/S当中的客户端需要自己开发,所以C/S成本相对高一些
浏览器内核
IE------trident
Chrome------blink
Firefox-------gecko
safari-------webkit
Opera-------presto