软件测试学习:师傅领进门修行看个人

本课程学习导图

2-1 软件测试阶段

1、单元测试

     概念: 对软件中的 最小可测试单元   进行检查和验证。

     原则: (1)尽可能测试用例相互独立     (2)一般由代码开发人员实施     

     好处:(1)能尽早发现缺陷     (2)利于重构     (3)简化集成(为集成测试奠定基础)     (4)单元测试规范很大程度上减少文档编写     (5)用于设计

     限制:(1)穷尽测试不可能     (2)一行代码需要3~5行测试代码

     单元测试框架:PHPUnit     CppUnit     JUnit     nunit(针对.net)

2、集成测试

     概念:在单元测试基础上,将单元组装测试,关注接口

     集成测试实施方案:(1)Big Bang     (2)自顶向下     (3)自底向上     (4)核心系统集成(先测试核心部分)     (5)高频测试

     2、3常用于以前的瀑布模型,4、5常用于现在的敏捷开发

3、系统测试(主要用黑盒测试)

     概念:将集成测试的软件与系统中其他部分结合起来,在 实际运行环境  中测试 ,偏于业务角度的验证

     关注点:(1)系统本身使用     (2)系统与其他系统的连通     (3)在不同压力下的表现     (4)真实使用环境下的表现

4、验收测试

     概念:交付测试。用户进行测试

     细分:alpha测试:用户在开发者提供的环境下测试     beta测试:完全脱离开发者


2-2 软件测试手段

1、分类

     根据测试可见度:黑盒、白盒、灰盒

     状态:静态、动态

     测试方式:手工、自动化

黑盒:

     优点:(1)容易实施,无需关注内部     (2)更贴近用户视角

     缺点:(1)测试覆盖率较低,一般只有40%     (2)黑盒自动化测试复用率低,维护成本较高

     主要测试什么?(1)不正确or遗漏功能     (2)接口上,输入输出是否正确     (3)是否有数据结构错误或外部信息(比如数据文件)访问错误     (4)系统性能是否满足要求

     主要设计方法:(1)等价类划分法     (2)边界值分析法(比较重点关注)     (3)错误推断法     (4)因果图法     (5)正交试验分析法     (6)状态迁移图法     (7)流程分析法

白盒:结构化测试,逻辑测试,透明测试

     优点:(1)迫使测试人员理解软件原理     (2)覆盖率较高,可以检测每条分支和路径     (3)能发现隐藏在代码的错误     (4)对代码测试比较彻底

     缺点:(1)成本高     (2)无法检测遗漏路径     (3)无法检测数据敏感性错误     (4)无法直接验证需求正确性

     主要测试方法:(1)代码检测法     (2)静态结构分析法     (3)静态质量度量法     (4)逻辑覆盖法(6种):语句、路径、判定、条件、判定/条件、条件组合覆盖。     (5)基本路径测试法

静态测试:

     不执行被测程序,通过评审软件文档、代码、程序复杂度、检查是否符合编程标准,来发现程序不足之处。

     有些白盒是静态测试。

     方法:     互审:程序员互相检查;走查:小组集体检查;会议:召开会议检查

动态测试:

     运行被测程序,比较运行结果与预期结果,分析运行效率、正确性、健壮性等。

     黑盒大部分是动态测试。

手工测试:众包测试、探索式测试

     优点:容易发现缺陷,容易实施、创造性、灵活性

     缺点:不一致性、可靠性低、依赖人力资源、重复测试效率低、覆盖量不容易度量

自动化测试:

     用单独的测试工具软件,控制测试的自动化执行,并对预期和结果进行自动检查。

     单元、接口、性能多用该测试。

     优点:高效高速、准确可靠、高复用性、覆盖量容易度量

     缺点:机械、发现缺陷率低、一次性投入较大


2-3 软件测试模式之瀑布模型

按测试模式分类:瀑布模型、敏捷测试、基于脚本测试、基于风险测试、探索式测试等

瀑布模型、v模型、W模型、x模型、H模型


2-4 敏捷测试、基于脚本测试、基于风险的测试

敏捷测试特点:

  • 强调从客户角度进行测试
  • 重点关注迭代测试新功能,不再强调测试阶段
  • 尽早测试,不间断测试,具备条件即测试
  • 强调持续反馈
  • 预防缺陷重于发现缺陷。

敏捷测试VS传统测试

基于脚本测试-SBT     Script-based Testing

脚本测试-ST     Scripted Testing

探索式测试-ET     Exploratory Testing

  • ET完全抛开测试脚本的测试。它是一种测试风格、思维而不是一种测试技。
  • 优点:

     1.更能激发测试人员的创造性和工作乐趣

     2.增加了发现新的或较深入Bug的可能性

     3.在较短时间内找到更多Bug以及对SUT做一个快速的评估

     4.有利于更加有效的实施自动化

     5.更加适用于敏捷项目

     6.减少了在简单、繁复上用例的无谓编写时间

  • 缺点:

     1.测试管理上有局限性,较难协调和控制

     2.对于Bug的重复利用和重复上作用有限

     3.对测试人员的测试技能和业务知识深度依赖较大

     4.只有在被测系统已完全可用的前提下才更有作用

     5.ET的生产率很难定义

     6.ET本身较难进行自动化

  • ET测试方法:局部、全局

               局部探索式测试:输入、状态、代码路径、用户数据、执行环境。

               全局探索式测试:漫游测试法—–商业区、旅馆区、历史区、旅游区、娱乐区、破旧区。

ET和ST要结合使用     ET应用比如说,问几个问题猜出你心中的答案的应用

基于风险测试-RBT     Risk-based Testing

     风险有:质量风险、管理风险、风险级别=风险可能性*风险严重度

     

基于模型的测试-MBT     model-based testing

     根据需求建模,借助工具建模然后执行,偏向于自动化测试。主要的MBT工具,微软的Spec Explorer。。


2-5 软件测试的分类

按照测试类型分:

功能测试(最主要)

性能测试

兼容性测试

部署测试

易用性测试

文档测试

本地化测试

安全测试

无障碍测试

可靠性测试

  • 功能测试:对提供给用户的功能进行测试。
    • 针对的问题:功能 错误或遗漏、界面问题、软件本身性能错误、数据及访问错误初始化及终止错误。
    • 功能自动化测试工具:QTP(基于关键字驱动)现在其实已经用的很少了、winrunner; silkTest; Rational robot; selenium; Watir; Sikuli

  • 性能测试:负载测试、压力测试、稳定性测试
    • 性能指标:并发用户数VU、每秒事务数TPS、系统响应时间、设备性能
    • 自动化测试工具:LoadRunner、Silkperformer、Jmeter、WebLoad、Apache Bench、LoadUI
    • 静态性能评估:对Web应用的页面进行静态分析,并给出评估结果的性能分析方法。工具有YSlow、PageSpeed。他们是浏览器插件,评级静态网页的标准有14个,减少HTTP请求之类的。
    • 应用性能管理(APM):提供对系统的实时监控以实现性能管理、故障管理的解决方案。比如听云。

  • 安全测试:是否符合产品安全需求和质量标准。

渗透测试:通过模拟对软件系统的恶意攻击行为来评估系统安全性的一种测试,与黑客不同于,黑客未授权,而且最后还会抹掉记录。

    • 渗透测试 VS 安全测试

                         攻————–防

                         点————–面

    • 可以查看OWASP网站,关注网站中的OWASP Top10和Test Guide
    • 安全测试工具:APPscan(针对web应用的漏洞扫描)、Webinspect(类似APPscan)、Nessus(针对服务器主机类)、Nmap(端口嗅探工具)、MetaSploit(攻击框架)、WebScarab(代理劫持)、Fortify(白盒测试,代码静态分析)、W3AF(针对web应用)

  • 兼容性测试:软件本身的兼容性、不同平台下的兼容性、在运行设备下的兼容性、软件互操作性(指的是软件内部不同功能操作是否兼容 & 与其他软件是否兼容,比如与微信是否兼容,与微信不兼容基本上就没用了)
    • 对web应用,还有浏览器兼容性,因为浏览器的内核不同
    • 浏览器兼容性测试工具:BrowserShots(该网站输入url值,可以看不同平台下的显示)

  • 文档测试:配套的文档的测试。如用户手册、使用说明、用户帮助文档等。

  • 可靠性测试:软件可靠性、(可靠性测试更多的是)硬件可靠性。

  • 易用性测试:使用软件时是否感觉方便,用户体验怎样。

  • 本地化测试:针对软件的本地化版本实施的针对性测试。比如英文版,中文版。不过不仅仅是语言,测试内容还有:1.语言、书写习惯;2.时区、日期格式、货币;3.当地风俗、法律法规;4.政治敏感内容。

  • 部署测试:安装测试,主要验证系统部署过程,并确保软件经过安装测试后可以正常使用。主要测试内容:不同环境下的部署验证;参照部署文档执行,过程的合理、正确性;

  • 无障碍测试:提供便于特殊人群使用的功能


3-1 常见软件测试分类

  • 回归测试:软件功能修改后,对软件进行重新测试,以确认修改没有引入新的错误或导致其他部分产生错误。尽量实现自动化。 回归测试的重心在关键模块重点功能组件

  • Monkey测试:搞怪测试。就是用一些随机、稀奇古怪的方式来操作软件,以测试系统的健壮性和稳定性。

  • 冒烟测试:确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性。类似于回归测试,但是测试的注重点不同。敏捷开发的“每日构建”中用冒烟测试来确认合入的代码没有影响主要功能的正常。

  • A/B测试(非常常用):多用于互联网行业,通过为页面提供2个版本给用户使用并记录相关的用户行为数据,来确定更优化设计。
    • A/B测试实施要点:
      • 1.多个方案并行;
      • 2.每次测试仅改动一个变量;
      • 3.按照某种规则进行优胜劣汰。
    • A/B测试工具:Google Analytics Content Experiments、Visual Website Optimizer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/81093.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django实现音乐网站 ⑺

使用Python Django框架制作一个音乐网站, 本篇主要是后台对歌手原有实现功能的基础上进行优化处理。 目录 新增编辑 表字段名称修改 隐藏单曲、专辑数 姓名首字母 安装xpinyin 获取姓名首字母 重写保存方法 列表显示 图片显示处理 引入函数 路径改为显示…

Rocketmq Filter 消息过滤(TAGS、SQL92)原理详解 源码解析

1. 背景 1.1 Rocketmq 支持的过滤方式 Rocketmq 作为金融级的业务消息中间件,拥有强大的消息过滤能力。其支持多种消息过滤方式: 表达式过滤:通过设置过滤表达式的方式进行过滤 TAG:根据消息的 tag 进行过滤。SQL92&#xff1a…

【王树森】深度强化学习(DRL)课程笔记:P1 基本概念(含gym安装)

课程信息 课程主讲:王树森(史蒂文斯理工学院计算机科学系的终身制助理教授) 课程内容:基本概念、价值学习、策略学习、Actor-Critic方法、AlphaGo、Monte Carlo (蒙特卡洛) 课程资料:https://github.com/wangshusen/D…

Jmeter(二) - 从入门到精通 - 创建测试计划(Test Plan)(详解教程)

1.简介 上一篇中已经教你把JMeter的测试环境搭建起来了,那么这一篇我们就将JMeter启动起来,一睹其芳容,首先宏哥给大家介绍一下如何来创建一个测试计划(Test Plan)。 2.创建一个测试计划(Test Plan&#x…

python接口自动化之正则用例参数化

前言 ​ 我们在做接口自动化的时候,处理接口依赖的相关数据时,通常会使用正则表达式来进行提取相关的数据。 ​ 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(Regular Expression,在代码中常简写…

yaml文件详解

目录 一、yaml的简介 二、yaml示例 1.编写yaml文件创建pod资源 2. 创建资源对象 3.查看创建的pod资源 4.创建service服务对外提供访问并测试 5.创建资源对象 6.查看创建的service 7.在浏览器输入 nodeIP:nodePort 即可访问 三、 获取yaml配置资源 四、将现有资源生成模…

【docker】docker-compose服务编排

目录 一、服务编排概念二、docker compose2.1 定义2.2 使用步骤2.3 docker-compose安装2.4 docker-compose卸载 三、编排示例 一、服务编排概念 1.微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启…

1 swagger简单案例

1.1 加入依赖 <!--swagger图形化接口--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version> </dependency><dependency><groupId>io.spri…

Agent:OpenAI的下一步,亚马逊云科技站在第5层

什么是Agent&#xff1f;在大模型语境下&#xff0c;可以理解成能自主理解、规划、执行复杂任务的系统。Agent也将成为新的起点&#xff0c;成为各行各业构建新一代AI应用必不可少的组成部分。 对此&#xff0c;初创公司Seednapse AI创始人提出构建AI应用的五层基石理论&#…

IO(JavaEE初阶系列8)

目录 前言&#xff1a; 1.文件 1.1认识文件 1.2结构和目录 1.3文件路径 1.4文本文件vs二进制文件 2.文件系统的操作 2.1Java中操作文件 2.2File概述 2.2.1构造File对象 2.2.2File中的一些方法 3.文件内容的操作 3.1字节流 3.1.1InPutStream的使用方法 3.1.2OutPu…

设计模式之三大类

目录 设计模式分类 1.创建型模式(Creational Patters) 2.结构型模式(Structural Patterns) 3.行为型模式(Behavioral Patterns) 3.1命令模式(The Command Pattern) 2.1适配器模式 2.1.1Object and Class Adapters 设计模式分类 1.创建型模式(Creational Patters) Fato…

SaaS系统相比传统软件,为何数据更安全?

随着云计算、5G等技术的不断进步&#xff0c;SaaS行业步入了快速发展的阶段&#xff0c;应用场景也日趋多元化。预计2023年底&#xff0c;中国SaaS行业市场规模将达到555.1亿元。 中研网对于SaaS发展态势预测这样评价&#xff1a; 当前&#xff0c;我国在多个维度上具备发展 S…

【机器学习】处理样本不平衡的问题

文章目录 样本不均衡的概念及影响样本不均衡的解决方法样本层面欠采样 &#xff08;undersampling&#xff09;过采样数据增强 损失函数层面模型层面采样集成学习 决策及评估指标 样本不均衡的概念及影响 机器学习中&#xff0c;样本不均衡问题经常遇到&#xff0c;比如在金融…

详解Kafka分区机制原理|Kafka 系列 二

Kafka 系列第二篇&#xff0c;详解分区机制原理。为了不错过更新&#xff0c;请大家将本号“设为星标”。 点击上方“后端开发技术”&#xff0c;选择“设为星标” &#xff0c;优质资源及时送达 上一篇文章介绍了 Kafka 的基本概念和术语&#xff0c;里面有个概念是 分区(Part…

验证码安全志:AIGC+集成环境信息信息检测

目录 知己知彼&#xff0c;黑灰产破解验证码的过程 AIGC加持&#xff0c;防范黑灰产的破解 魔高一丈&#xff0c;黑灰产AIGC突破常规验证码 双重防护&#xff0c;保障验证码安全 黑灰产经常采用批量撞库方式登录用户账号&#xff0c;然后进行违法违规操作。 黑灰产将各种方…

鸿鹄工程项目管理系统em Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统 em

​ Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目…

算法与数据结构-跳表

文章目录 什么是跳表跳表的时间复杂度跳表的空间复杂度如何高效的插入和删除跳表索引动态更新代码示例 什么是跳表 对于一个单链表来讲&#xff0c;即便链表中存储的数据是有序的&#xff0c;如果我们要想在其中查找某个数据&#xff0c;也只能从头到尾遍历链表。这样查找效率…

Makefile

什么是 Makefile 一个工程中的源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c; Makefile文件定义了一系列的规则来指定哪些文件需要先编译&#xff0c;哪些文件需要后编 译&#xff0c;哪些文件需要重新编译&#xff0c;甚至于进行更复杂的功…

Plecs最新安装免费版下载链接/Plecs 电力仿真软件4.7.5版本下载/实测能用

Plecs最新安装免费版下载链接 Plecs 电力仿真软件4.7.5版本下载 实测能用&#xff1a;

Flutter 让软键盘不再自动弹起

1、问题说明&#xff1a; 在开发中&#xff0c;经常遇到这种事&#xff0c;一个页面有输入框&#xff0c;点击输入框后&#xff0c;会弹起软键盘&#xff0c;同时输入框会聚焦&#xff0c;手动收起软键盘后&#xff0c;点击另一个按钮前往下一个页面或者显示一个弹窗&#xff0…