软件测试入门到精通(30天学会软件测试)

一、软件测试的概念和理论

软件测试的目的

  • 测试的目的是为了找到软件/网站存在的问题和缺陷

  • 通过提前找到软件存在问题,可以降低商业风险。

软件测试的定义

  • 软件测试就是用人工或者自动化对软件系统进行测试,通过测试需要找到预期结果和实际结果的差异

  • 预期结果:在测试之前我们就知道的结果/希望出现的结果

  • 实际结果:测试之后得到的实际结果

1.1、软件测试的基本原则

1、所有软件只能证明存在问题,不能证明不存在问题。

  • 所有的软件的都是有问题的,只是这些问题是否已经发现了

2、不能进行穷举测试,应该进行分类测试。

  • 穷举:将所有的可能都测试一遍

  • 分类测试

    • 可以被正常搜索的:也就是可以正常显示的哪些,比如男装

    • 不能正常搜索的:也就是哪些不应该被显示的对象,比如各种违禁品

    • 特殊情况:带有特殊符号、空格、什么都不输入,

3、测试工作应该尽早介入,可以降低修复成本。

  • 及早发现问题,及早解决

4、缺陷聚集原则,二八法则

  • 一个项目中80%缺陷会集中在20%的功能模块中

  • 越是有问题的地方,这里往往会有其他的问题

  • 出现这个现象的原有

    • 复杂这个模块的程序员技术水平一般

    • 模块功能功能复

 5、测试依赖环境

  • 程序的架构:B/S C/S

    • B/S架构:Broswer/Server,通过浏览器访问服务

    • C/S架构:Client/Server,通过客户端程序访问服务

  • 测试B/S架构准备三款浏览器:谷歌、火狐、IE

  • 测试C/S架构准备:

    • PC:win7、8、10,mac,linux

    • 手机:安卓、苹果、鸿蒙

6、杀虫剂现象

  • 测试人员在经过一段时间后会进入自己的固有的思维意识,很难在测试出其他的bug,这个时候可以进行交叉测试,就是交互测试人员。

7、不存在缺陷谬论

  • 不存在没有缺陷的程序

二、软件开发模型

2.1、软件开发模型简介

软件开发模型也叫做软件生命周期

软件测试与软件开发的开发模式有着紧密的联系,作为一名测试人员,应该充分理解软件的开发模式,以便找准自己在其中的位置,从而发挥自身的价值。

在软件开发的几十年实践中,人们总结了很多软件开发模型来描述和表示一个复杂的开发过程,软件开发有三种模式:

  • 瀑布模型

  • 快速原型模型

  • 螺旋模型

2.2、三种模型的特点和优缺点

2.2.1、瀑布模型

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbG92ZTk1OTk=,size_20,color_FFFFFF,t_70,g_se,x_16

 第一个阶段:项目立项阶段

1、调研:

        首先对项目进行可行性研究,通过可行性的研究来建立项目。

        调研完成后会得到一个可行性的调研报告。

2、需求分析:

        调研判断项目完成后,就可以进行需求分析。

        最终会得到一个需求规格说明文档,文档中仅仅是需求的大体说明。

第二个阶段:项目开发阶段

1、概要设计:

        就是将需求文档中的内容落地。

        概要设计完成后,会得到概要设计文档。                                                        

        概要文档中会将项目分成若干个功能模块,而且会明确说明每个模块中的功能。

2、详细设计:

        再详细设计中,明确指定了模块具体实现的细节。

        最终会得到一个详细的设计文档。

3、编码(编写程序):

        又程序员编写程序,最终得到的是程序本身。

4、软件测试:

         测试软件是否可以正常运行,是否达到了预期的功能。

        最终得到是测试报告。

第三个阶段:项目运维阶段

对软件上线后进行运行和维护。

瀑布模型的特点

  • 是以文档驱动,后面所有的工作都是基于前面的文档的内容。

  • 每个阶段执行一次,而且是线性依次进行的

  • 开发模式中,瀑布模型是非常重要的一种

瀑布模型的优点

  • 各个阶段非常清晰

  • 每个人只需要关注自己的阶段

瀑布模型的缺点

  • 下面的阶段是依赖上面阶段的分析结果的,一旦上面出现错误,那么下面全部都会出现错误。

  • 整个流程过分依赖需求分析结果,这种模式不能适应变化频繁的项目。

快速原型模型

  • 一个项目在很短时间能,就有一个版本上线了,这个版本往往功能不全,而且有bug

  • 在后续的版本中陆续修复bug,并添加完善功能

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbG92ZTk1OTk=,size_20,color_FFFFFF,t_70,g_se,x_16

特点:

  • 快速上线

  • 支持用户参与

优点:

  • 克服了瀑布模型的缺点,减少中间环节,可以及早发现问题并进行修复

缺点:

  • 仅仅适合中小型项目,不适合大型项目       

螺旋模型

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbG92ZTk1OTk=,size_20,color_FFFFFF,t_70,g_se,x_16

三、软件测试模型

测试模型:所谓的模型就是这个行业的人总结出来的测试经验。

第一种:V模型

  • 这种模型其实就是在前面瀑布模型的基础上进行测试的

  • 这种模型其实也是瀑布模型的变种

  • 根据测试阶段不同,测试也同样分成四个不同的阶段

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbG92ZTk1OTk=,size_20,color_FFFFFF,t_70,g_se,x_16

 V模型的流程

用户需求 → 需求分析 → 概要设计 → 详细设计 → 编码 → 单元测试 → 集成测试 → 系统测试→验收测试

优点:

  • 整个流程比较清晰,即包含了底层测试,也包含了对高层进行测试

缺点:

  • 这个本质上还是瀑布模型,因此具有瀑布模型的缺点

第二种:W(双V)模型

这种模式主要是为了解决V型模型存在的问题,解决思路就是测试前移。

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbG92ZTk1OTk=,size_20,color_FFFFFF,t_70,g_se,x_16

W型比V型多的部分

  • 集成:每个程序员将自己负责的功能模块合并到一起

  • 实施:将开发好的软件安装到客户的服务器上

  • 交付:教给用户如何使用软件

静态和动态测试

  • W模型中,对各种的文档进行测试,都是静态测试

  • 对程序进行测试,就是动态测试

优点:

  • 测试工作前移,可以尽早发现存在的问题

缺点:

  • 对技术和管理能力要求较高

总结:W模型中的流程

开发V:用户需求→需求分析→概要设计→详细设计→编码→集成→实施→交付

测试V:验收测试设计→系统测试设计→集成测试设计→单元测试设计→单元测试→集成测试→系统测试→验收测试

四、软件质量模型

ISO9126 软件质量模型是评价软件质量的国际标准,由6个特性和27个子特性组成。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbG92ZTk1OTk=,size_20,color_FFFFFF,t_70,g_se,x_16

六大特性

一、功能性
1、适合性:软件产品为指定的任务和用户目标提供一组合适功能的能力。(1、软件提供了用户所需要的功能 2、软件提供的功能是用户所需要的)
2、准确性:软件提供给用户功能的精确度是否符合目标。(例如:运算结果的准确,数字发生偏差,多个0或少个0)
3、互操作性:软件与其它系统进行交互的能力。(例如:PC机中WORD和打印机完成打印互通;接口调用)
4、保密安全性:软件保护信息和数据的安全能力。(主要是权限和密码)
5、功能性的依从性:遵循相关标准(国际标准、国内标准、行业标准、企业内部规范)

二、可靠性
1、成熟性:软件产品为避免软件内部的错误扩散而导至系统失效的能力(主要是对内错误的隔离)
2、容错性:软件防止外部接口错误扩散而导致系统失效的能力(主要是对外错误的隔离)
3、易恢复性:系统失效后,重新恢复原有的功能和性能的能力。
4、可靠性的依从性:遵循相关标准。

三、易用性
1、易理解性:软件交互给用户的信息时,要清晰,准确,且要易懂,使用户能够快速理解软件。
2、易学性:软件使用户能学习其应用的能力。
3、易操作性:软件产品使用户能易于操作和控制它的能力。
4、易用性的依从性:遵循一定的标准。

四、效率
1、时间特性:软件处理特定的业务请求所需要的响应时间。
2、资源利用性:软件处理特定的业务请求所消耗的系统资源。
3、效率依从性:遵循一定的标准。

五、维护性
1、易分析性:软件提供辅助手段帮助开发人员定位缺陷产生的原因,判断出修改的地方。
2、易改变性:软件产品使得指定的修改容易实现的能力。(降低修复问题的成本)
3、稳定性:软件产品避免由于软件修改而造成意外结果的能力。
4、易测试性:软件提供辅助性手段帮助测试人员实现其测试意图。
5、维护性的依从性:遵循相关标准。

六、可移植性
1、适应性:软件产品无需作相应变动就能适应不同环境的能力。
2、易安装性:尽可能少的提供选择,方便用户直接安装。
3、共存性:软件产品在公共环境中与其它软件分享公共资源共存的软件。(兼容性)
4、易替换性:软件产品在同样的环境下,替代另一个相同用途的软件产品的能力。
5、可移植性的依从性:遵循相关的标准。


五、软件测试分类

软件测试方法种类繁多,有白盒测试、黑盒测试、静态测试、动态测试、集成测试等等,但是记忆起来容易混乱,容易分不清楚,如果把软件测试方法进行分类, 就会清晰很多。

5.1、按照阶段分类

1、单元测试

  • 又称模块测试,是针对软件设计的最小单位----程序模块或功能模块,进行正确性检验的测试工作。其目的在于检验程序各模块是否存在各种差错,是否能正确地实现了其功能,满足其性能和接口要求。

2、集成测试(组装测试)

  • 又叫组装测试或联合,是单元测试的多级扩展,是在单元测试的基础上进行的一种有序测试。检验软件单元之间的接口关系,以期望通过测试发现各软件单元接口之间存在的问题,最终把经过测试的单元组成符合设计要求的软件。

3、系统测试

  • 是为判断系统是否符合要求而对集成的软、硬件系统进行的测试活动、它是将已经集成好的软件系统,作为基于整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、人员、数据等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。

4、验收测试

  • 检查软件是否满足客户的要求,对软件做最后的测试

    • α测试【Alpha】:阿尔法测试的软件版本内存版本,软件bug较多,一般不让用户直接使用,而是公司内部交流使用。

    • 测试【Beta】:贝塔测试就是软件的公测版本,目的就是让更多的用户通过使用软件来发现更多的问题。

    • γ测试【Gamma】:伽马测试就是软件的正式候选版,这个版本和用户最后使用的正式版几乎完全一致。

5.2、按照技术划分(是否查看源码划分)

1、白盒测试

  • 又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并完成测试的一种测试方法。

2、黑盒测试(数据驱动测试)

  • 又称为数据驱动测试,把测试对象当做看不见的黑盒,在完全不考虑程序内部结构和处理过程的情况下,测试者仅依据程序功能的需求规范考虑,确定测试用例和推断测试结果的正确性,它是站在使用软件或程序的角度,从输入数据与输出数据的对应关系出发进行的测试。

3、灰盒测试

  • 是一种综合测试法,它将“黑盒”测试与“白盒”测试结合在一起,是基于程序运行时的外部表现又结合内部逻辑结构来设计用例,执行程序并采集路径执行信息和外部用户接口结果的测试技术。

5.3、按照是否运行程序划分

静态测试:

  • 指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。

动态测试:

  • 是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能指标。

5.4、按照是否自动运行

  • 人工测试(所有测试工作,都有测试人员手动进行测试)

  • 自动化测试 (通过python开发自动化工具,用工具完成测试工作)

5.5、其他分类

1、冒烟测试:

  • 测试软件基础功能是否正常

2、回归测试:

  • 在测试工作中,一旦发现bug,需要将这个bug提交给开发,开发修复完成后,需要重新对这些bug再次进行测试

5.6、 软件缺陷

缺陷不等于bug ;bug仅仅是缺陷中的很小的一个部分而已

软件缺陷判定标准

1、软件未实现产品说明书要求的功能

2、软件实现了产品说明书未提到的功能

3、软件出现了产品说明书指明不应该出现的错误

4、软件未实现产品说明书虽未明确提及但应该实现的目标

5、软件难以理解、不易使用、运行缓慢或者或从测试人员的角度看觉得最终用户会认为不好
 

软件缺陷产生原因【缺陷只能减少,不能完全避免】

1、对于需求文档等文等文件解释、理解错误

2、设计文档本身有错误

3、 程序代码错误

4、硬件和软件系统有错

软件缺陷类型

1、功能错误

软件没有达到需求文档的功能要求,或者功能异常

2、界面错误

软件功能正常,但是界面不好看或者未达到规格说明中的要求

3、兼容性错误

软件和系统中的其他的程序冲突,导致软件无法运行

4、易用性错误

软件难以理解、不易使用

        

猜你喜欢

转载自blog.csdn.net/weixin_67281781/article/details/123990288