1. 软件测试基础

1.1. 什么是软件

Windows,Office,金山词霸,有道云,手机淘宝,手机微信...

1.2. 什么是软件测试

使用人工或者自动手段,来运行或者测试某个系统的过程。其目的在于检测它是否满足规定的需求或者弄清预期结果与实际结果之间的差别

1.3. 学习软件测试能做什么

1.4. 程序测试包含哪些内容

程序测试包括程序逻辑功能,界面,性能,易用性,兼容性,安装等测试,当然文档测试也算,排版,字体大小,也算程序测试的内容

1.5. 测试环境

测试环境=硬件+软件+网络

硬件环境:pc机还是笔记本

软件环境:windows10  windows8  windows7

网络:局域网还是互联网

1.6. 测试用例

测试用例,英文是Test Case缩写为TC,指的是在测试执行之前设计的一套详细的测试方案,包括测试环境,测试步骤,测试数据和预期结果。

测试用例=输入+输出+测试环境

1.1.1. 为什么写测试用例

优点:

A) 便于团队交流

B) 便于重复测试

C) 便于跟踪统计

D) 便于用户自测

缺点:浪费时间,编写测试用例的时间有可能比测试时间还要长

1.1.2. 什么时间写测试用例

1.1.3. 测试用例模板

一般测试用例模板分为两种:word和excel

案例:

2. 软件测试分类


2.1. 黑盒测试和白盒测试

黑盒测试(Black Box -Test)指的是把被测试的软件看做一个黑盒子,我们不去关心盒子里边的结构是什么样子,只关心软件的输入数据和输出结果

白盒测试(White Box Testing),指的是把盒子盖打开,去研究里边源代码和程序结构。

2.2. 静态测试和动态测试

静态测试,是指不实际运行被测试软件,而只是静态的检查程序代码、界面或者文档中可能存在的错误的过程。

动态测试:是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。

2.3. 单元测试、集成测试、系统测试和验收测试

1.1.4. 单元测试

是指对软件中最小可测试单元进行检查和验证

单元测试当一段代码完成之后,是由白盒测试工程师或者开发人员自行测试,比如java中执行单元测试叫做junit测试。

目前大部分公司单元测试由开发人员简单编译和调试一下自己的程序,没有相应的单元测试计划。

单元测试方式:先静态地观察代码是否符合规范,然后动态地运行一下代码,检查运行的结果。

1.1.5. 集成测试

集成测试是单元测试的下一个阶段,是指将通过测试单元模块组装成系统或者子系统,再进行测试,重点测试不同模块的接口部分。

集成测试也是由白盒测试或者开发人员来完成。

1.1.6. 系统测试和验收测试

集成测试完成之后,就是系统测试和验收测试。

系统测试:指的是将整个软件系统看做一个1个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。

系统测试由黑盒测试人员在整个系统集成完毕后进行测试,前期主要测试系统的功能是否满足需求,后期主要测试系统运行的性能是否满足需求,以及系统在不同的软硬件环境的兼容性等。

2.4. 功能测试和性能测试

1.1.7. 功能测试

是黑盒测试的一部分,它检查实际软件的功能是否符合用户的需求。

功能测试可以细分逻辑功能测试,界面测试,易用性测试,安装测试和兼容性测试。

还有一些其他名词:恢复测试,确认测试,接口测试,数据库测试,安全测试,配置测试....

逻辑功能测试:测试应用是否符合逻辑,比如应该先注册账号之后,才能进行登录,登录之后才能看我的购物车

界面测试:窗口大小,按钮大小,点击按钮弹出什么样的提示框,是否有滚动条,下拉菜单是否有展示内容...

易用性测试:从软件使用的合理性和方便性等角度对软件系统进行检查,比如,软件窗口长宽比例是否合适,颜色色彩是否赏心悦目,字体大小是否合适

安装测试:

兼容性测试:硬件兼容性测试和软件兼容性测试

硬件兼容性:比如一款软件在pc机,笔记本上是否兼容

软件兼容性测试:比如一款软件在windows8和windows10上是否兼容

1.1.8. 性能测试

时间性能:软件的一个具体事务的响应时间。比如点击一个登陆按钮,到登录成功(失败)的反应时间,浏览器非常常见,ANR(Application not responding 应用程序无响应)

空间性能:软件运行时所消耗的系统资源,比如对内存和cpu的消耗

一般性能测试:软件正常运行,不向其施加任何压力的测试

稳定性测试:也叫可靠性测试,是指连续运行被测系统,检查系统运行时的稳定成都。

负载测试:让被测系统在其能够忍受的压力范围之内连续运行,来测试系统的稳定性。

压力测试:持续不断的给被测试的系统增加压力,直到被测试的系统压垮为止,用来测试系统所承受的最大压力。

2.5. 回归测试、冒烟测试、随机测试

1.1.9. 回归测试

是指对软件的新版本进行测试时,重复执行上一个版本测试时的用例,比如在1.0版本中,有一个bug,到了2.0版本中,再重新测试1.0中这个bug

1.1.10. 冒烟测试

指对一个软件进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。

测试小组在正式测试一个新版本之前,先指派一两个测试人员测试一下软件的主要功能,如果没有实现,则打回开发组重新开发,这样做可以节省大量的时间成本和人力成本。

1.1.11. 随机测试

是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。

2.6. 测试案例

1.1.12. 需求:

测试一个带广告图案的花纸杯

1.1.13. 功能测试

能否装水,

除了装水, 能否装其他液体。比如可乐,酒精

能装多少ML的水

杯子是否有刻度表

杯子能否泡茶,跑咖啡

杯子是否能放冰箱,做冰块

杯子的材质是什么(玻璃,塑料,黄金做的)

1.1.14. 界面测试

外观好不好看。

什么颜色

杯子的形状是怎么样的。

杯子的重量是多少

杯子的图案是否合理

1.1.15. 性能测试

能否装100度的开水(泡茶)

能否装0度冰水

装满水,放几天后,是否会漏水

杯子内壁上的涂料是否容易脱落。

杯子上的颜色是否容易褪色或者脱落

风吹是否会倒,摔一次是否会摔坏,摔多次是否会摔坏

1.1.16. 安全性测试

制作杯子的材料,是否有毒

放微波炉里转的时候,是否会熔化。

从桌子上掉到水泥地上是否会摔碎。

杯子是否容易长细菌

杯子内壁上的材料,是否会溶解到水中

装进不同液体,是否会有化学反应。

1.1.17. 易用性测试

杯子是否容易烫手

杯子是否好端,好拿

杯子的水是否容易喝到

杯子是否有防滑措施

是否能接受杯子的广告内容与图案

3. 软件生命周期模型

软件生命周期 同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生命周期(软件生存周期)[1] 。软件生命周期模型是指人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考。

3.1. 边做边改模型

许多产品都是使用“边做边改”模型来开发的。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。

在这个模型中,开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。在提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新修改代码,直到用户满意为止。

这是一种类似作坊的开发方式,对编写几百行的小程序来说还不错,但这种方法对任何规模的开发来说都是不能令人满意的,其主要问题在于:

(1) 缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;

(2) 忽略需求环节,给软件开发带来很大的风险;

(3) 没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。

3.2. 瀑布模型

瀑布模型是一个经典的软件生命周期模型,一般将软件开发分为可行性分析(计划)、需求分析、软件设计(概要设计、详细设计)、编码(含单元测试)、测试、运行维护等几个阶段,如图所示。

瀑布模型中每项开发活动具有以下特点:

(l)从上一项开发活动接受其成果作为本次活动的输入。

(2)利用这一输入,实施本次活动应完成的工作内容。

(3)给出本次活动的工作成果,作为输出传给下一项开发活动。

(4)对本次活动的实施工作成果进行评审。

优点:当前一阶段完成后,只需要去关注后续阶段。

缺点: 需求在开始的不确定性,错误到最后才能发现。

3.3. 原型化模型

原型化模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,经过和用户针对原型的讨论和交流,弄清需求以便真正把握用户需要的软件产品是什么样子的。充分了解后,再在原型基础上开发出用户满意的产品。

如图所示:原型严格来说不算一种软件生命周期模型,它只是一种获取需求的方法,在实际工作中该方法是相当重要的方法。

模型要点:瀑布和原型模型相结合,强调版本升级。

该模式的特点是一次性地获取全部的需求,然后做出分版本实现各需求的计划,每个版本只实现一部分需求,通过多个版本逐步实现全部需求,而每个版本可以认为是一个“小瀑布”。

该模型的好处是可以尽快让系统上线,让客户先使用部分功能,尽早实现系统的价值。

该模型比较能符合实际的情况,我们往往也是通过多个版本来逐步实现全部需求,但需求是不可能在一开始就完全确定的,实际情况是往往只能确定80%,而后期通过各版本我们还会获取更多的新需求以及需求调整。将此模型稍微调整后,可以适用于大部分的实际项目。

3.4. 增量模型

增量模型也是原型化开发方法。如图所示

3.5. 螺旋模型

1.软件分多个版本开发,每个版本就是一次螺旋。

2.每个版本按照这样的顺序进行:

1)确定软件目标,选取定实施方案,弄清项目开发的限制条件;(图中左上象限)

2)分析所选取方案,考虑如何识别和消除风险;(图中右上象限)

3)实施软件开发;(图中右下象限)

4)评价开发工作,提出修正建议,调整计划。(图中右下象限、左下象限)

3.需求不是一次获取和实现的,通过多个螺旋来完善。

4.计划也不是一次成型的,每次螺旋都需要调整。

图中的螺旋线代表随着时间推进的工作进展;开发过程具有周期性重复的螺旋线形状。4个象限分别标志每个周期所划分的4个阶段:制定计划、风险分析、实施工程和客户评估。螺旋模型要点:统一了瀑布模型与原型模型,与增量模型相似,更强调风险分析。

优点:

1)设计上很灵活,可以在项目的各个阶段进行变更;

2)以小的分段来构建大型系统,使成本计算变得简单容易;

3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;

4)随着项目推进,客户始终掌握项目的最新信息 ,从而能够和管理层有效地交互;

5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。

缺点:

螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的。

因此,这种模型往往适应于内部的大规模软件开发。该模型建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。

3.6. V模型

V 模型的左边下降的是开发过程各阶段,与此相对应的是右边上升的部分,即各测试过程的各个阶段。

V 模型的优点在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发各阶段的对应关系。

V模型的缺陷及解决思路

V模型仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,需求的满足情况一直到后期的验收测试才被验证。

解决的思路是,当一个软件开发的时候,研发人员和测试人员需要同时工作,测试在软件做需求分析的同时就会有测试用例的跟踪,这样,可以尽快找出程序错误和需求偏离,从而更高效的提高程序质量,最大可能的减少成本,同时满足用户的实际软件需求。

3.7. W模型

相对于V模型,W模型更科学。W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。

4. 敏捷开发

敏捷开发是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发效率和响应能力。敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。

5. 软件质量模型

5.1. 软件的功能性

1.1.18. 适用性:

所提供的功能是用户所需要的,

用户所需要的功能软件系统是否已提供。

1.1.19. 准确性:

软件系统提供给用户的功能是否满足用户对该功能的精

确度要求。

1.1.20. 互操作性:

软件系统和一个或多个周边系统进行信息交互的能力。

例如

不同型号的打印机与word之间的协议可能不一致,导致消息传递过程中发生错误。

▲应该将被测软件系统和周边系统的各种主流型号进行互操作性测试。

1.1.21. 保密安全性:

软件系统保护信息和数据的能力。

Ⅰ、防止未得到授权的人或系统访问相关的信息或数据

Ⅱ、保证得到授权的人或系统能正常访问相关的信息或数据。

不同的系统对于安全性的需求差别很大

常见的安全性测试:

⑴用户验证:登录密码验证、IP地址访问限制等

⑵用户权限管理:验证低级别用户是否具有了高级别用户的权限,各级别用户权限都得到了实现。

⑶系统数据的保护:对例如系统文件、用户密码文件等进行隐藏、密码验证、内容加密、备份。

1.1.22. 防DoS攻击

DoS (Denial of Service)攻击:拒绝正常用户访问服务的攻击。

Dos攻击在众多网络攻击技术中是一种简单有效并且具有很大危害性的攻击方法。它通过各种手段消耗网络带宽和系统资源,或者攻击系统缺陷,使正常系统的正常服务陷于瘫痪状态,不能对正常用户进行服务,从而实现拒绝正常用户访问服务。

1.1.23. 防溢出攻击

例如:溢出攻击

正常输入:IE:http://www.baidu.com/

异常输入:IE:http://www.baidu.com/……(恶意代码)

1.1.24. 加密、解密:

在计算机通讯中,采用密码技术将信息隐蔽起来,再将隐蔽后的信息传输出去,使信息在传输过程中即使被窃取或截获,窃取者也不能了解信息的内容,从而保证信息传输的安全

1.1.25. 防病毒

5.2. 软件可靠性

1.1.26. 成熟性

软件系统防止内部错误扩散而导致失效的能力。

▲子系统、模块、单元模块的设计人员应该仔细分析和自身有接口关系的子系统、模块、单元模块,识别出这些接口上可能会传递过来的错误,然后在自己子系统、模块、单元模块内部对这些可能的错误预先进行防范,规避这些错误传递到自身而引起自身的失效。

1.1.27. 容错性

软件系统防止外部接口错误扩散而导致系统失效的能力。

▲设计人员应该充分分析外部接口可能产生的错误,然后在设计上对这些错误一一予以防范,防止这些外部传入的错误波及自身而失效。

1.1.28. 易恢复性

系统失效后重新恢复原有功能、性能的能力

①原有能力恢复的程度

②原有能力恢复的速度

1.1.29. 可靠性依从性

遵循相关的标准(国际标准、国家标准、行业标准、企业内部规范等)约定或法规以及类似规定的能力。

5.3. 软件易用性

1.1.30. 易理解性

用户在使用软件系统的过程中,系统交互给用户的信息是否准确、清晰、易懂,能帮助用户准确理解系统当前真实的状态,指导其进一步的操作。

1.1.31. 易学性

软件系统提供相关的辅助手段,帮助用户学习使用它

的能力。

例如:是否有用户手册,用户手册是否有中文版,是否有在

线帮助,界面上控件是否有回显功能等。

1.1.32. 易操作性

例如:

①Nokia手机和Moto手机在编辑短消息时的方便性差异。

②GUI界面,菜单层次不要太深

③安装软件的过程

错误:给用户大量的安装步骤,每步又有大量分支选项

(把用户当成本软件的专家)

▲测试时应该以非专业的角度来测试过程,往往需要α、

β测试。

1.1.33. 吸引性

美观:GUI界面、手机外观等

新颖:如夏新手机来电跳舞功能

5、易用性的依从性

遵循相关的标准(国际标准、国家标准、行业标准、企业内部规范等)约定或法规以及类似规定的能力。

5.4. 软件效率(性能测试)

1.1.34. 时间效率(2-5-10)

系统在各业务场景下完成用户指定的业务请求所需的响应时间。

1.1.35. 资源效率

系统在各业务场景下完成用户指定的业务请求所消耗的系统资源,如CPU占有率、内存占有率、通信带宽占有率、软件内部消息包资源占有率等。

1.1.36. 效率依从性

遵循相关的标准(国际标准、国家标准、行业标准、企业内部规范等)约定或法规以及类似规定的能力。

5.5. 软件可维护性

1.1.37. 易分析性

软件系统提供辅助手段帮助开发人员分析识别缺陷、失效产生的原因,找出待修复部分的能力。(降低缺陷定位的成本)

1.1.38. 易改变性

对软件缺陷的修复容易被实施(降低修复缺陷成本)

▲设计上封装性好、高内聚(同层次设计时,一个实体只完成一个功能)、低耦合,为未来可能的变化留有扩充余地。

1.1.39. 稳定性

例如:代码中的有物理含义的数字,一定用宏代替。

1.1.40. 易测试性

(降低发现缺陷的成本)

①软件可控制:

软件系统提供辅助手段帮助测试工程师控制该系统的运行,实现其测试执行步骤的能力(通过打点、改变内部状态、值等手段)

②可观察:

软件系统提供辅助手段帮助测试工程师获得充分的系统运行信息,以正确判断系统运行状态和测试执行结果的力。

a、设计单独的测试模式

b、提供单独的测试版本

▲测试部(一般指测试系统工程师)应该在需求分析阶段就提出可测试性需求,可测试性需求和软件产品其他需求一起纳入需求包被分析设计并实现。

5、维护性的依从性

遵循相关的标准(国际标准、国家标准、行业标准、企业内部规范等)约定或法规以及类似规定的能力。

5.6. 软件可移植性

1.1.41. 适应性

软件系统无需做任何相应变动就能适应不同运行环境(操作系统平台、数据库平台、硬件平台等)的能力。

▲解决平台无关、可移植性问题的一个常用思路是构造出一个虚拟层,虚拟层将下层细节屏蔽,对上层提供统一口。

1.1.42. 易安装性

主流平台     全部测试用例

非主流平台  10%测试用例

1.1.43. 共存性

软件系统和在公共环境与其共享资源的其他系统共存的能力。

▲测试不仅需要关注自身特性的实现,还要关注本软件是否影响了其他软件的正常功能。

5.7. 易替换性

软件系统升级能力(在线升级、打补丁升级等)

可移植性的依从性

遵循相关的标准(国际标准、国家标准、行业标准、企业内部规范等)约定或法规以及类似规定的能力。

软件测试基础--01相关推荐

  1. 01.软件测试基础知识整合

    软件测试基础 前言 一.什么是软件测试 二.软件测试的目的 三.软件测试的基本流程 四.测试分类 五.测试用例 1.什么是测试用例 2.测试用例的重要性 3.测试用例的设计方法 4.测试点分析 5.如 ...

  2. 软件测试基础-自动化测试技术

    今天跟大家分享软件测试基础,自动化测试技术,主要从引入自动化测试的原因.自动化测试的定义.自动化测试的优势.自动化测试的劣势.自动化测试的工具五个方面来讲述. 01 引入自动化测试的原因 软件规模越来 ...

  3. fiddler模拟服务器响应,2020军队文职计算机知识:【软件测试基础知识】如何使用fiddler模拟接口服务器...

    [导语]2020军队文职计算机知识:[软件测试基础知识]如何使用fiddler模拟接口服务器已发布,为助力各位考生做好2020年军队文职招聘考试准备,中公部队文职考试网提供了军队文职专业科目和综合辅导 ...

  4. 软件工程与软件测试基础知识_这是我在软件工程工作九个月中学到的知识

    软件工程与软件测试基础知识 I've been working for about nine months at Dexter as a software developer. I wrote a b ...

  5. 软件测试系列---软件测试基础

    软件测试系列--软件测试基础 1.什么是软件测试? **软件测试是一个过程,包含了若干活动,运行软件进行测试只是活动之一**进行软件测试可以人工方式也可以借助于工具**进行软件测试可以运行软件也可以不 ...

  6. 「软件测试基础」理论篇之软件测试概论

    文章目录 1. 软件 1.1 软件发展史 1.2 软件生命周期 1.3 软件缺陷 1.4 三种纠错技术 2. 软件过程 2.1 RUP 2.1.1 RUP各个阶段 2.1.2 RUP核心工作流 2.2 ...

  7. 软考备战系列一----软件测试基础

    1.软件测试基础 软件测试的定义 测试的含义为检验产品是否满足需求为目标, 软件测试的目的 测试的目的是寻找错误,并且尽最大可能找出最多的错误 软件测试的原则 所有的软件测试都应追溯到用户需求 应当把 ...

  8. 电大计算机应用技术基础视频,电大形成性测评-计算机应用技术基础01

    电大形成性测评-计算机应用技术基础01 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 15.9 积分 01任务-在线作业试卷总分:100      ...

  9. 前端基础:html基础(css基础和JavaScript基础)/01/B/S网络结构,html文件结构,html标签格式,lt;bodygt;中的一些常用标记

    前端基础:html基础(css基础和JavaScript基础)/01/B/S网络结构,html文件结构,html标签格式,<body>中的一些常用标记 html:超文本标记语言(非编程语言 ...

最新文章

  1. 欧拉遗留240多年的问题,被物理学家用量子力学解决
  2. 关于USBOS V3.0 teamviewer13打开无反应的问题
  3. oracle pk_serial,Oracle 常用技巧和脚本-数据库专栏,ORACLE
  4. Layui表单账号注册校验密码是否一致
  5. 614 Second Degree Follower
  6. day19——常用正则表达式、re正则对象和正则匹配效率比较、编译正则对象
  7. 怎样快速打出初中常用的化学反应方程式
  8. 三栏式布局的几种实现方式
  9. 图片处理工具类ImageHelper
  10. FPGA时钟设计方案
  11. 4T移动硬盘 分区_手机连接移动硬盘教程
  12. 计算机网络安全的对策,计算机网络安全和对策.PDF
  13. 判断一无符号整数的二进制形式中是否包含偶数个1
  14. OGS标准以及常见的标准服务
  15. Python中常见字符串去除字符串空格的方法
  16. 数据库的读写分离方案
  17. 《图解密码技术》——读书笔记
  18. 记一次mysql故障“Can‘t open and lock privilege tables: Table ‘mysql.user‘ doesn‘t exist”
  19. 深度学习制作自己的数据集—为数据集打上标签保存为txt文件,并进行划分和加载数据集
  20. 自定义bpmn.js左侧工具栏palette样式

热门文章

  1. 我曾经死缠烂打爱了3年的女孩,结果让我后悔不已
  2. 追猎者:原油大幅回落拖累贵金属走跌
  3. 基础平台项目之设计方案
  4. python+appium实现手机自动答题
  5. 年轻人不要边打工边自我感动。
  6. android高德地图api驾车路线规划,可拖拽驾车路线规划
  7. Spring通过工厂创建对象的三种方法详解(工厂设计模式)
  8. 目前最主流的自动化测试技术selenium
  9. 2020-08-19微信公众号学习心得
  10. 数据挖掘技术-检测与处理缺失值