软件测试理论

一、软件质量模型

  1、功能性:功能是否满足用户需求

  2、易用性:是否好用

  3、可靠性:在指定条件下,软件是否正常运行

  4、效率:性能好不好

  5、维护性:软件可被修改的能力

  6、可移植性:在不同软硬件环境下的适应能力

二、应用:

  1、产品型软件:针对大众的软件

    形成文档:PRD (产品需求文档)

  2、项目型软件:针对个人或企业的软件

    形成文档:SRS (软件需求规格说明书)

三、软件的生命周期

  计划、分析、设计、开发、测试、运维

四、软件测试的目的:通过测试减少软件缺陷,提升产品质量

五、软件测试的时机:最佳介入时机:需求分析阶段

  缺陷放大模型:测试介入越早,软件修复的成本越低

六、软件测试阶段:

  1、单元测试阶段:

    白盒测试:①静态分析法:看代码流程;②动态分析法:运行代码进行测试

              参考文档:LLD

  2、集成测试阶段:灰盒测试

              参考文档:HLD

  3、系统测试阶段:

    黑盒测试:①测试类型:功能测试、非功能测试;②方法:测试用例设计方法

              参考文档:PRD/SRS

    衡量指标:需求覆盖率

  4、验收测试阶段:(检验产品是否符合要求)

    ①项目型软件:由甲方根据需求进行验收

    ②产品型软件:

      α测试:内测:由开发组织用户到公司进行测试,可随时记录问题,过程可控

      β测试:公测:对外测试,针对选中的特定用户

      γ测试:上线前候选版本的测试

    参考文档:PRD/SRS

七、软件测试的四大核心过程

      1、分析:测试需求分析,明确测什么

    全面分析需求文档:显性需求、隐形需求

    形成:软件测试需求分析说明书

      2、设计:

    ①计划:明确测试范围、资源配置    形成:测试计划文档

    ②方案:明确怎么测    形成:测试方案文档

      3、实现:测试用例的编写及评审、数据准备、环境搭建、脚本

    形成:测试用例文档 

      4、执行

    ①执行测试用例:验证实际结果是否与预期结果一致

      一致:用例通过;不一致:用例失败:提交缺陷

    ②提交缺陷,跟踪缺陷:

      ⑴缺陷:验证的实际结果与预期结果不一致

      ⑵缺陷的生命周期:

        测试提交缺陷-开发修改缺陷-测试验证缺陷-通过-关闭缺陷/-不通过-返回给开发

      ⑶开发给予的解决方案:

        

      ⑷缺陷的描述:在XX模块下,做了XX操作,产生了XX问题

          5C原则:准确;清晰;简明;完整;一致

      ⑸通过缺陷管理工具来提交:信息一致、有效跟踪缺陷、利于BUG分析

      ⑹缺陷的严重程度:

        ⑴致命:软件崩溃;造成数据丢失

        ⑵严重:单功能或多功能的缺失

        ⑶一般:多余的实现;不太重要功能的缺失

        ⑷提示:提示信息的缺失或错误

      ⑺缺陷的类型:错误、遗漏、多余的实现、可以改进的

      ⑻优先级:根据功能模块的重要性决定

      ⑼缺陷集中现象:找free bug,针对缺陷集中的模块或相关功能模块,更容易找到BUG

    ③提交缺陷报告

    ④提交测试报告

八、测试类型

  1、功能性测试:关注功能是否实现

    ①需求要求的功能有没有正确实现

    ②需求要求的功能少做了

    ③需求要求的功能多做了

  2、可用性测试:关注软件是否好用

    易理解性、易学性、易操作性、吸引性

  3、可靠性测试:关注软件在特定条件下能否正常可靠运行

    ①成熟度:软件会不会因外部原因经常崩溃、长时间工作能否保持正常

    ②容错性:软件因内外部原因,自行处理错误的能力

    ③可恢复性:针对数据的恢复,如:断点续传

  4、兼容性测试:关注软件在不同的软硬件下的适应能力

    不同软件的适应性:

      ⑴不同的操作系统

      ⑵不同的浏览器

      ⑶不同产品厂商

      ⑷不同分辨率

      ⑸不同屏幕尺寸

  5、安全性测试: 关注用户信息、与账户资金相关的功能点是否安全

    SQL注入、口令认证、加解密技术、权限管理、安全日志

  6、性能测试:关注性能好不好

    ①时间特征:响应时间、TPS:每秒事务数、吞吐率:I/O

    ②资源利用率:内存、cpu、硬盘

    ③并发用户数:一起操作的用户数量,找到最佳并发用户性

    ④压力测试:多用户同时操作,长时间高负荷运行

九、测试手段:

  1、手工测试

    优点:①不可替代  ②能发现更多的BUG  ③容易积累项目经验

  2、自动化测试

    优点:①执行效率高  ②高效的验证是否存在BUG(冒烟测试、回归测试)

    缺点:①不能发现更多的BUG  ②GUI依赖性强  ③编码耗费的时间长

  3、静态测试

    不运行被测对象进行的测试:①文档测试  ②代码测试

  4、动态测试

    运行被测对象进行的测试

十、测试方法

  1、白盒测试

  2、灰盒测试

  3、黑盒测试

    黑盒测试方法:即测试用例设计方法

    宗旨:用最少的用例发现尽可能多的BUG

    测试用例设计方法(7种):

      

       

       

       流程分析法:针对每条路径设计1个测试用例即可

       

  4、回归测试:为验证软件缺陷是否被修复而做的测试

    何时:开发修复缺陷,针对新的版本冒烟测试通过之后

    怎么做:

    手段:手工测试、自动化测试

    方法:

      ①完全重复法

      ②选择性重复法:覆盖修改法;周边影响法;指标达成法

    流程:

      ①制定回归测试的策略,分析需要做回归测试的功能点 

      ②确定测试的版本

      ③确定回归测试的用例

      ④执行测试用例

  5、冒烟测试:为验证软件的可测性,针对核心功能/新增功能而进行的测试

    可测性:有没有测试的必要,如测试不通过,返回给开发;如通过,进行下一步测试

    何时:系统集成之后,开发每次提版,都需要首先进行冒烟测试

    怎么做:针对核心功能/新增功能,随机选取1-2条用例进行测试

  6、本地化测试:额外需要关注当地的风俗习惯

  7、国际化测试:关注国际化软件的界面、语言、数据格式、字符处理、时区

  8、随机测试:产品上线之前,随机选取核心功能、使用频率高的功能、缺陷集中的功能及相关功能用例进行测试

  9、monkey测试:针对安卓系统或安卓应用的一种随机可靠性测试

    模仿猴子的行为,随机进行一些操作(点击、滑动、返回),验证软件是否奔溃

  10、探索性测试(ET):产品上线之前,不依赖用例,凭经验进行测试

原文地址:https://www.cnblogs.com/badbadboyyx/p/12141778.html