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

news2024/11/25 2:35:14

本课程学习导图

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.coloradmin.cn/o/849786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

影响亚马逊Listing转化率的14大因素你知道吗?

我们都知道亚马逊listing转化率对于链接的推新和维稳来说有多么重要,只要转化率的比值无法达到整体市场平均比值的及格线,你就很可能会慢慢被亚马逊的飞轮算法所淘汰。 那么,具体是哪些因素在影响着你的listing转化率呢?这里我们可以分为显…

容器——1.集合概述

文章目录 1.1. Java 集合概览1.2. 说说 List,Set,Map 三者的区别?1.3. 集合框架底层数据结构总结1.3.1. List1.3.2. Set1.3.3. Map 1.4. 如何选用集合?1.5. 为什么要使用集合? 1.1. Java 集合概览 从下图可以看出,在 Java 中除了以 Map 结尾…

【深度学习】【风格迁移】Visual Concept Translator,一般图像到图像的翻译与一次性图像引导,论文

General Image-to-Image Translation with One-Shot Image Guidance 论文:https://arxiv.org/abs/2307.14352 代码:https://github.com/crystalneuro/visual-concept-translator 文章目录 Abstract1. Introduction2. 相关工作2.1 图像到图像转换2.2. Di…

Node.js |(三)Node.js API:path模块及Node.js 模块化 | 尚硅谷2023版Node.js零基础视频教程

学习视频:尚硅谷2023版Node.js零基础视频教程,nodejs新手到高手 文章目录 📚path模块📚Node.js模块化🐇介绍🐇模块暴露数据⭐️模块初体验⭐️暴露数据 🐇导入文件模块🐇导入文件夹的…

c++日志工具之——log4cpp

1、log4cpp概述 Log4cpp是一个开源的C类库,它提供了C程序中使用日志和跟踪调试的功能,它的优点如下: 提供应用程序运行上下文,方便跟踪调试; 可扩展的、多种方式记录日志,包括命令行、文件、回卷文件、内…

Kubernetes入门 一、认识Kubernetes

目录 什么是Kubernetes为什么使用 Kubernetes集群组件组件Master组件节点组件附加组件 核心概念和资源服务的分类资源和对象命名空间级ContainerPodreplicas控制器-ReplicationController控制器-ReplicaSet控制器-StatefulSet控制器-DaemonSet控制器-JobDeployment服务发现-Ser…

pytest-xdist分布式测试原理浅析

目录 pytest-xdist执行流程: pytest-xdist 模块结构: pytest-xdist分布式测试原理: pytest-xdist源码浅读: pytest-xdist执行流程: 解析命令行参数:pytest-xdist 会解析命令行参数,获取用户…

Vue3_对响应式对象解构赋值之后失去响应性——toRefs()

官网toRefs() :响应式 API:工具函数 | Vue.js toRefs 在调用时只会为源对象上可以枚举的属性创建 ref。如果要为可能还不存在的属性创建 ref,请改用 toRef。 setup(){const state reactive({name:"张三"age:14})const stateAsToRefs toRef…

SpringBoot 热部署

文章目录 前言一、spring-boot-devtools添加热部署框架支持settings 开启项目自动编译开启运行中热部署使用Debug启动 二、IDEA 自带 HowSwap 功能设置 Spring Boot 启动类等待项目启动完成点击热加载按钮存在的问题 三、JRebel 插件【推荐】安装插件使用插件 前言 在日常开发…

linux学习——Redis基础

目录 一、noSQL 类型 特点及应用场景 二、Redis 三、安装方式 编译安装 rpm安装 四、目录结构 /etc/redis.conf 五、Redis命令 六、本地登录和远程登录 本地登录 远程登录 七、数据库操作 帮助信息 库操作 数据操作 八、Redis持久化 一、RDB类型 二、AOF模式 一…

小白到运维工程师自学之路 第六十九集 (构建Docker容器监控系统:Cadvisor +Prometheus+Grafana)

一、概述 Prometheus产品简介 Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包。自2012年成立以来,很多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发者和用户社区。 它现在是一个独立的开源项目,可以独立于任…

由于找不到msvcp140.dll无法继续执行代码多种解决方法

msvcp140.dll的作用是提供C程序运行所需的一些基本函数和类库,包括字符串处理、数学计算、文件操作、内存管理等功能。它为C程序员提供了一些常用的工具和函数,使得他们可以更方便地开发和调试程序。 当你的计算机缺少msvcp140.dll文件时,可能…

怎么把几秒的视频变成gif?视频转gif图片教程分享

无论是一段有趣的宠物视频、搞笑的表演片段,还是喜欢的电影或电视剧片段,通过gif形式分享,能够更好地吸引用户的关注、传递情感,并在社交媒体上引发互动与共鸣,那么如何才能将一段几秒钟的视频转gif图片(ht…

VoxWeekly|The Sandbox 生态周报|20230731

欢迎来到由 The Sandbox 发布的《VoxWeekly》。我们会在每周发布,对上一周 The Sandbox 生态系统所发生的事情进行总结。 如果你喜欢我们内容,欢迎与朋友和家人分享。请订阅我们的 Medium 、关注我们的 Twitter,并加入 Discord 社区&#xf…

Grafana技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》

阿丹: Prometheus技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》_一单成的博客-CSDN博客 在正确安装了Prometheus之后开始使用并安装Grafana作为Prometheus的仪表盘。 一、拉取镜像 搜索可拉取版本 docker search Grafana拉取镜像 docker pull gra…

活动发布报名平台型公众号开源版开发

活动发布报名平台型公众号开源版开发 后台管理、手机端自由发布活动! 为个人、企业或主办方举办各类活动提供一个发布推广与活动报名平台,主办方可以在平台进行活动发布,用户可以免费注册并灵活使用该系统的发布、报名管理、核销等功能。 功能…

Matlab绘图 图例legend 太长,怎么减小指示线的长度

来源 绘图时,稍微减小文字已经不能正常放下图例,想通过调整图例指示线段长度缩减整个图例长度。 方法一 参考matlab官方论坛 leg legend(Plot1,Plot2,...); leg.ItemTokenSize [x1,x2]; By default x130 and x218 so put larger or smaller number…

AI Chat 设计模式:13. 代理模式

本文是该系列的第十三篇,采用问答式的方式展开,和前面的文章有一些不同,我不再进行提问了,改为由 GPT 1 号提问,GPT 2 号作答,每一节的小标题是我从 GPT 1 号的提问中总结出来的。我现在是完完全全的旁观者…

[保研/考研机试] 猫狗收容所 C++实现

题目描述: 输入: 第一个是n,它代表操作序列的次数。接下来是n行,每行有两个值m和t,分别代表题目中操作的两个元素。 输出: 按顺序输出收养动物的序列,编号之间以空格间隔。 源代码&#xff…

服务器之LNMP

lnmp的构成 L:linux系统,操作系统。 N:nginx网站服务,前端,提供前端的静态页面服务。同时具有代理,转发的作用。 转发:主要是转发后端请求。转发到PHP。nginx没有处理动态资源的功能,他有可以支持转发动态请求的模块。 M&…