一,软件测试行业的基本介绍
1,为什么需要软件测试?
保证软件的功能是可用的,我们必须进行测试
开发的产品 有没有好的产品体验
2,为什么选择软件测试?
第一, 国内的软件测试需求是在逐渐增加的
第二,有些人你喜欢创造世界,而有些人喜欢完善世界,我希望世界更完美所以我选择测试。
3,为什么不让开发自己做测试?
第一,专业度:软件测试和软件开发分属与软件行业的两个不同的技术方向。所以让专人做专事对质量更加有保障。
第二,思维定式:在软件的开发周期中,对于程序员来说他们大量的时间都在思考如何实现具体的软件功能。而不会从用户的角度考虑如何去“奇葩“的使用这些功能
第三,测试力度:相对于开发者来说,开发的产品就是他们的”亲儿子“,怎舍得下狠手~
二,软件测试的基本介绍
1,软件测试定义
通过手工或者工具对”被测对象“进行测试操作,从而验证实际结果与预期结果是否存在差异。
2,软件测试作用
1,通过测试工作可以发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心。
2,测试可以记录软件在运行中产生的数据,可以为决策提供数据支持。
3,测试可以降低同类型产品开发遇到问题的风险。
3,软件测试的7个原则
测试原则就是我们在执行测试工作时必须遵守的一些规则。
第一,测试显示软件存在缺陷
测试只能证明软件存在缺陷,但不能证明软件不存在缺陷。软件测试是为了降低存在缺陷的可能性,即便没有找到bug,也并不能证明软件完美。
第二,穷尽测试是不可能的
现在软件的规模越来越大,复杂度越来越高,想做到完全性的测试是不可能的。在测试阶段,测试人员可以根据风险和优先级来进行集中和高强度测试,从而保证软件的质量。
第三,测试应尽早介入
为啥要尽早介入测试?简单来说就是保证软件质量,降低风险和成本。测试人员一般在需求阶段就开始介入,使缺陷在需求阶段或设计阶段就被发现,缺陷发现越早,修复的成本就越小。
第四,缺陷集群性(2/8原则)
缺陷集群性表明了小部分的模块包含了大部分的缺陷。软件测试中存在 帕累托 pareto 原则:80%的缺陷发现在20%的模块中。
一个功能模块发现的缺陷越多,那存在的未被发现的缺陷指数也越高,故发现的缺陷与未发现的缺陷成正比。
第五,杀虫剂悖论
反复使用相同的杀虫剂会导致害虫对杀虫剂产生免疫力而导致无法杀死害虫。软件测试也一样。如果一直使用相同的测试方法或手段,可能无法发现新的bug。
第六,测试活动依赖于测试内容
根据业务的不同,软件测试内部也分为不同的行业,比如游戏行业、电商行业、金融行业。不同的行业,测试活动的开展都有所不同,比如测试技术、测试工具的选择,测试流程都不尽相同,所以软件测试活动的开展依赖于所测试的内容。
第七,没有错误是好事谬论
有可能99%没有bug的软件都是不能使用的。如果对错误的需求进行了彻底的测试,这种情况就发生了。软件测试不仅是找出缺陷,同时还有确认软件是否满足需求。如果开发出来的产品不满足用户需求,即便找到了和修复了bug也作用不大了。
三,测试对象
软件分为三个部分组成:
功能集合、使用说明、配置数据
对于软件来说,需要经历一个从无到有的过程,而我们需要将这个过程划分为不同的阶段,然后每个阶段都有相应的测试对象。
1.需求分析阶段:各种需求规格说明。
2.软件架构设计:API接口文档(接口测试)
3.编码实现阶段:源代码(白盒测试:单元测试)
4.系统功能使用:软件功能主体:(当前行业做的最多的一种测试)
四,测试级别
1,单元测试(unit test)
-在软件测试中单元指的就是组成软件的底层代码结构一般就是类、方法、组件(在当下的软件测试行业,不会刻意要求测试人员对源代码进行测试)
2,集成测试(IT system ingertaion test)
-将多个单元模块组合在一起,然后验证他们之间沟通的”桥梁“是否能正常工作(接口测试)
3,系统测试 (ST system test)
-这是当前行业做的最多的一种测试。由测试人员充当用户然后对软件的功能主体进行测试。
4,验收测试
-(1)α测试 ---->(内测)
-(2)β测试 ---->(公测)
- (3) UAT(user acceptance test)测试 ----> 由客户派出业务非常精通的人员来使用该软件,从而对功能进行测试
-(4)验收测试的核心就是让用户为当前软件”买单“
五,系统测试分类
1.功能测试:验证当前的软件主体功能是否可用。
2.兼容性测试:验证当前在不同环境下是否可用。
3.安全测试:验证软件是否只是能授权用户提供功能使用。
4.性能测试:相对于当前软件消耗的资源,它的产出能力。
六,常见系统测试方法
1,按测试对象进行分类
-(1)白盒测试:这种测试的主体就是软件底层代码,不在意外在的界面是否ok,只要求底层功能的实现和逻辑的正确。
-(2)黑盒测试:这种测试就是对软件的主体功能进行测试,看软件外在的主体功能是否可用。
-(3)灰盒测试: 介于上述两种测试之间(接口测试)
注意:上述三种测试中”盒“指的是被测对象(也就是我们所说的软件)
2,按测试对象是否执行分类
-(1)静态测试:测试对象不执行。(一般测文档、纯界面静态展示性质的)
-(2)动态测试:将测试对象运行在真实的使用环境中进行测试。
3,按测试手段进行分类
-(1)手工测试:由测试人员手动的对被测对象进行测试,优点是可以灵活的改变测试操作及环境。
-(2)自动化测试:所谓自动化测试主要有两种形式,一种是自己写的测试脚本,另一种就是通过第三方工具对被测对象进行测试。优点是可以高效率的执行一些人工无法实现的操作
七,软件质量特性
软件质量的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
---B --->browser 浏览器
---C --->clent 客户端
---S --->Server 服务器
十,浏览器基本介绍
1,浏览器是啥?
- 浏览器本质就是一款软件,安装在操作系统上。一般给用户提供浏览网页服务。
2,五大浏览器生产厂商
目前我们会将所以的浏览器总结出一个所谓的五大生产厂商:
IE:是微软出品的浏览器
chrome:谷歌的浏览器,之前一直使用苹果的webkit内核,现在与苹果分道扬镳,自己开创了新的blink内核,这个内核也被欧鹏(opera浏览器)共同采用和开发
firefox:Mozilla Firefox,内核是Gecko;
Safair:使用的是苹果公司自己的内核:webkit
Opera(欧朋):内核是blink;
3,常见的图片类型
jpg(jpeg):一种可以高度保留图片色彩信息的格式
png:该图片的类型可以实现透明
gif:图片所占的体积小,可以实现动图
psd:是一种分层的图片格式
https://www.jianshu.com/p/b528668cf9b3