测试开发1

2023-11-17

一. 测试开发基本概念

1. 什么是软件测试?

软件测试就是软件测试工程师验证软件是否满足用户的需求

2. 软件测试和软件开发的区别?

(1)开发:广度小,专业度高
测试:所需技能广泛,但是专业度低

(2)软件测试和软件调试
目的不同
–测试的任务是发现程序中的缺陷;调试的任务是定位并且解决程序中的问题。
参与角色不同
–测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开发人员执行。调试由开发人员完成。
执行的阶段不同
–测试贯穿整个软件开发生命周期,调试一般在开发阶段。

3.你为什么选择软件测试?

综合能力:沟通能力,学习能力,开发能力,文字能力,自动化测试技术,编写测试用例的能力,探索性思维
感兴趣
承受压力,承担责任

4. 什么是需求?

用户的期望和满足合同(文档,规则,标准)规定所需要的条件和权限

用户需求和软件需求
软件需求是用户需求转化而来的,它是用户需求的细化
用户需求比较粗略,直接实现会有困难,因为没有细节,所有需要软件需求把用户需求细节实现和规范,把用户需求变成一个具体的可实现的过程文档。

二. 测试开发基础

1. 需求是软件测试的依据

验证需求,保证需求正确可实现。细化需求,从需求中提炼出一个个测试项。
问题:软件测试人员如何深入了解需求?
从需求分析阶段就开始介入了解需求,站在用户需求的角度

2. 用户名和密码登陆测试用例

2.1 功能角度:

  1. 用户名和密码是否大小写敏感
  2. 页面上的密码框是否加密显示
  3. 后台系统创建的用户第一次登陆成功时,是否提示修改初始密码。
  4. 忘记用户名和忘记密码的功能是否可用。
  5. 前端页面是否根据设计要求限制用户名和密码的长度
  6. 如果登陆成功需要验证码,点击验证码图片是否可以更换(更新)验证码,更新后的验证码是否可用。
  7. 刷新页面是否会刷新验证码
  8. 如果验证码具有时效性,需要验证时效内和时效外的验证码是否有效。
  9. 用户登录成功,但是回话超时后,继续操作,是否会重新定向到用户登录页面。
  10. 不同级别的用户,登陆系统后权限是否正确。
  11. 页面登陆的焦点是否定位在用户名输入框中(易用性)
  12. 快捷键Tab和Enter键是否可以正常使用。

2.2 非功能需求维度:

  1. 用户密码后台(数据库)存储是否加密。
  2. 用户密码在网络上传输中是否加密
  3. 密码是否具有有效期,密码有效期到期之后,是否提示需要修改密码。
  4. 不登陆的情况下,在浏览器中直接输入登陆后才可以访问的URL地址,验证是否会重新定向到用户登录界面。
  5. 密码输入框是否不支持复制和粘贴。
  6. 密码输入框内输入的密码是否在页面源码模式下别查看。
  7. 用户名和密码的输入框中分别输入典型的“SQL注入攻击”字符串,验证系统的行为是否被篡改。
  8. 用户名和密码的输入框中分别输入典型的“XSS跨站脚本攻击”字符串,验证系统的行为是否被篡改。
  9. 连续多次登录失败的情况下系统是否会阻止后续的尝试以应对暴力破解。
  10. 同一用户在同一终端的多种浏览器上登录,验证登陆功能的互斥性是否符合设计预期。
  11. 同一用户先后在多台终端浏览器上登录,验证登录是否具有互斥性。

2.3 性能:

  1. 单用户登录的响应时间是否小于3s
  2. 高并发场景下用户登陆的响应时间是否小于5s.
  3. 高并发场景下服务端的监控指标是否符合预期。
  4. 高并发场景下,是否出现死锁和不合理的等待。
  5. 长时间大量用户连续登录和登出,服务器端是否存在内存泄漏。

2.4 兼容性:

1.不同浏览器下,验证登陆页面的显示以及功能的正确性。
2. 相同浏览器的不同版本,验证登陆页面的显示以及功能的正确性
3. 不同移动设备终端的不同浏览器下,验证登陆页面的显示以及功能的正确性。
4. 不同分辨率的界面下,验证登陆页面的显示以及功能的正确性。

3. 测试用例

测试用例就是向被测试系统发起的一组集合,包含测试环境,测试数据,测试步骤,预期结果,(重要性、优先级、操作方式、标题等)

优点:衡量需求的覆盖率;复用性,借鉴意义;可以用于回归测试;防止遗漏测试需求

4. 什么是BUG(软件错误)?

当且仅当,规格说明是存在的并且正确,程序与规格说明之间的不匹配才是错误。
当没有需求规格说明书时,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。

5. 开发模型 (5个模型)

软件开发的生命周期

需求分析——计划——设计——开发——测试——运行维护

5.1 瀑布模型

在这里插入图片描述
特点: 阶段性强,每一个阶段比较独立;看重前期的分析需求和后期的测试。
缺点:测试在编码后才开始介入,导致前期的问题后期才发现,失去及早纠正的机会。

5.2 螺旋模型

适合于项目庞大,风险大,复杂度高
在这里插入图片描述
特点:强调每一个迭代的测试质量和风险分析,抗风险能力强
缺点:风险管控人力物力投入很多,成本比较大。

5.3 增量模型、迭代模型

增量通常和迭代混为一谈,但是其实两者是有区别的。
增量是逐块建造的概念,例如画一幅人物画,我们可以先画人的头部,再画身体,再画手脚……而迭代是反复求精的概念,同样是画人物画,我们可以采用先画整体轮廓,再勾勒出基本雏形,再细化、着色。

特点:抗风险能力强

5.4 敏捷模型(重要!!!)

《敏捷宣言》:
个体与交互重于过程和工具
可用的软件重于完备的文档
客户协作重于合同谈判
响应变化重于遵循计划
在每对比对中,后者并非全无价值,但我们更看重前者。
特点:轻文档,轻流程、重目标、重产出、拥抱变化

5.4.1 scrum模型

基本流程:
在这里插入图片描述
scrum里面的角色:
scrum由product owner(产品经理)、scrum master(项目经理)和team(研发团队)组成。
其中product owner负责整理user story(用户故事),定义其商业价值,对其进行排序,制定发布计划,对产品负责。
scrum master 负责召开各种会议,协调项目,为研发团队服务。
研发团队则由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品。

(1) 产品负责人负责整理user story,形成左侧的product backlog。
(2) 发布计划会议:product owner负责讲解user story,对其进行估算和排序,发布计划会议的产出就是制定出这一期迭代要完成的story列表,sprint backlog。
(3) 迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有明确的负责人,并完成工时的初估计。
(4) 每日例会:每天scrum master召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。
(5)演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果。期间大家的反馈记录下来,由po整理,形成新的story。
(6)回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改
进的效果。

6. 测试模型

6.1 v 模型

在这里插入图片描述
特点: 每一个阶段独立性强
左边每一个阶段是右边测试阶段的依据,和右边每一个测试阶段一 一 对应。
瀑布模型变种(缺点):测试在编码后才开始介入,导致前期的问题后期才发现,失去及早纠正的机会。

6.2 w 模型

在这里插入图片描述
W模型特点:每一阶段独立性强,测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的。
局限性:需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作无法支持敏捷开发模式。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临困惑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

测试开发1 的相关文章

  • 在 Angular 中使用 Vue 组件

    我有一个用 Vue 构建的项目 我想在 Angular 应用程序中重用 Vue 应用程序中的组件 这样我就不必从头开始重建每个组件 我在medium上看到了这个教程 如何在 Angular 应用程序中使用 Vue 2 0 组件 https
  • chrome 调试器承诺在暂停时不会解析?

    也许我没有正确调试承诺 但基本上 如果您在断点处停止并运行异步代码 它实际上不会完成 直到您恢复执行为止 这是一个问题 调试器允许您快速试验多个 api 方法 但如果您恢复它 您就不能 debugger now type the follo
  • Oo 任何 IDE 中的 javascript 代码补全

    你知道有什么IDE可以自动完成这种代码吗 我这里有一个 javascript 类生成器 function var core bind function method scope if method instanceof Function t
  • 如何将udp发送到udp node.js服务器?

    我对此很陌生 所以我真的不知道我在做什么 但我已经设置了一个 node js udp 服务器 我想从客户端 来自网站 向它发送一个数据包 但我不知道如何在 javascript 中做到这一点 或者是否可能 我不是在研究如何从 Node js
  • 如果对象包含在另一个数组中,则从数组中删除该对象

    我试图从数组中删除一个对象 如果该对象的属性 唯一 包含在另一个数组中 我知道我可以像这样执行嵌套 for 循环 for i 0 i lt array length i for j 0 j lt array2 length j if arr
  • 如何使用 selenium 和 Mocha 获取 xPath() 选择的锚标记的文本

    我已经成功选择了 a 标签 我想显示锚标记的文本 但无法这样做 我正在使用 selenium mocha javascript 和 phantomJS 这是我的脚本 详细 var assert require assert var test
  • 如何在ASP.NET Webform中使用Jquery表单插件?

    我遇到了这个插件 http malsup com jquery form getting started http malsup com jquery form getting started 我想知道如何在 ASP NET WebForm
  • jquery 验证错误位置

    这看起来很简单 但我无法弄清楚 我正在使用 jquery 验证插件 我验证所有文件 但我想要的是在输入文本行中显示验证消息警报 例如在电子邮件输入中 请填写电子邮件地址 但现在它出现在所有字段下 在我的html中
  • jQuery 选择 # id 以单词为前缀,计数器为后缀

    有没有办法用 jQuery 选择所有带有前缀 my 和后缀 0 9 的 id 像这样的 my 1 4 还是可以用循环来实现 div div div div div div div div div div 第一个想法 似乎效果很好 div i
  • 如何按照编写的顺序迭代 javascript 对象属性

    我发现了代码中的一个错误 我希望通过最少的重构工作来解决该错误 此错误发生在 Chrome 和 Opera 浏览器中 问题 var obj 23 AA 12 BB iterating through obj s properties for
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 是否可以使用 javascript 测试用户的浏览器/操作系统是否支持给定类型的链接?

    是否可以使用 javascript 或其他任何东西 测试用户的操作系统 浏览器是否支持给定的 url 方案 例如 大多数仅使用网络邮件的用户计算机上未设置 mailto 是否有可能以某种方式捕获单击 mailto 链接的尝试并弹出比浏览器错
  • javascript中按tab键时如何调用函数?

    我有一个这样的功能 function whenEmpty field if field value field style backgroundColor ffcccc alert Please fill the field field f
  • Javascript - 将值从下拉框传递到 Google Maps API

    我正在使用 Google 地图 API 为一家出租车公司创建报价表 目前 用户在 2 个文本框中输入出发点和接载点 API 会计算两点之间的距离以及行程费用 我正在尝试添加两个具有设定位置的下拉框 以便用户可以选择这些位置之一或使用文本框输
  • 是否有任何非轮询方式来检测 DOM 元素的大小或位置何时发生变化?

    很长一段时间以来 我一直在寻找一种方法来检测 DOM 元素的大小或位置何时发生变化 这可能是因为窗口调整了大小 或者因为向该元素添加了新的子元素 或者因为在该元素周围添加了新元素 或者因为 CSS 规则已更改 或者因为用户更改了浏览器的字体
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • 如何在jquery中获取保存时间和当前时间的差异?

    我想在 javascript 或 jquery 中获取保存时间和当前时间之间的时差 我节省的时间看起来像Sun Oct 24 15 55 56 GMT 05 30 2010 java中的日期格式代码如下 String newDate 201
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 数据表日期范围过滤器

    如何添加日期范围过滤器 like From To 我开始进行常规搜索和分页等工作 但我不知道如何制作日期范围过滤器 我正在使用数据表 1 10 11 版本 My code var oTable function callFilesTable
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • selenium3和selenium4的区别

    1 初始化浏览器对象 在初始化driver对象的时候 selenium4多了一个Service类 用来管理驱动程序的启动 停止 service Service r D python39 chromedriver exe driver web
  • 手写字符识别

    一 手写字符识别原理 以下来源网上 手写数字识别 可以采用图像识别的方法 左边的x是手写之后的图像 右边的y是对应的数字 对于图像信息 计算机是用数值来进行表示的 机器学习让计算机具备智能 实际上是训练出数值模型w对于新的输入x 可以通过与
  • STL容器总结

    1 Vector 本质是动态数组 拥有一段连续的内存空间 并且起始地址不变 能非常好的支持随机存取 即 操作符 但由于它的内存空间是连续的 所以在中间进行插入和删除会造成内存块的拷贝 如果空间不够 则另外分配新的两倍大小的空间 然后把旧空间
  • mysql不等于的写法_mysql 不等于 符号写法

    经过测试发现mysql中用 lt gt 与 都是可以的 但sqlserver中不识别 所以建议用 lt gt selece from jb51 where id lt gt 45 sql 里 符号 lt gt 于 的区别 lt gt 与 都
  • 打印机驱动安装教程

    工作中 尤其是从事半文秘工作的人 不是全文秘 没有安装打印机驱动经验 这里就来说说如何安装佳能打印机驱动 准备安装资料 佳能打印驱动 安装步骤 1 我这里是压缩文件 解压后 点击Setup exe开始安装 2 要同意才能下一步安装 3 根据
  • jenkins运行Linux后台命令

    这里是指广义上的后台 不管是shell命令nohub或者其他 只要是需要常驻linux后台的命令或者程序 如果通过Jenkins启动 当任务结束时Jenkins都会清理掉此次任务中的所有相关进程 现象就是明明运行成功了但是实际找不到进程 解
  • 安装CPU版本的pytorch和torchvision(Win10)

    前言 在使用以下方法之前 我是用了网上说的搭建清华镜像进行下载 虽然pytorch下载成功了 但是在下载torchvision的时候就一直成功不了 在网络的大千世界中 我终于悟到先本地下载再安装的方法 第一步 找好对应的版本 第二步 下载本
  • 基于Canal与Flink实现数据实时增量同步(一)

    点击上方蓝色字体 关注我 canal是阿里巴巴旗下的一款开源项目 纯Java开发 基于数据库增量日志解析 提供增量数据订阅 消费 目前主要支持了MySQL 也支持mariaDB 准备 配置MySQL的binlog 常见的binlog命令 是
  • Java多线程分批导入数据

    package com rk iam sys service author wdy version 1 0 date 2022 4 27 14 50 import com alibaba fastjson JSON import com a
  • NLP学习笔记-聊天机器人项目准备(三)

    走进聊天机器人 1 目前企业中的常见的聊天机器人 QA BOT 问答机器人 回答问题 有明确目标 能够返回结果 代表 智能客服 比如 提问和回答 TASK BOT 任务机器人 通过机器人帮助人去完成事情 代表 siri 比如 设置明天早上9
  • 使用词云报错‘TransposedFont‘ object has no attribute ‘getbbox‘

    网上根本找不到这句报错 搞了很久 终于搞完了 1 卸载numpy库 pip uninstall numpy 2 卸载pillow库 pip uninstall pillow 3 卸载词云库 pip uninstall wordcloud 再
  • Linux宝塔面板反向代理设置教程

    此方法最简单快捷 没有复杂步骤 不容易出错 即最简单 零代码 零部署的方法 实现准备 一台服务器 安装宝塔面板 OpenAI官方的API KEY ChatGPT网站系统源码 ChatGPT网站系统源码 大家可以看看另一篇文章介绍 最新版本系
  • 项目中如何修改element-ui的默认样式

    element ui 修改默认样式 一 第一种 修改element ui默认的样式 如果要组件内全局修改 首先在浏览器里F12找到element默认的UI类名 找到要修改的默认类名以后 在文件中修改代码 重写属性 但是如果已经在全局内修改了
  • Nginx反向代理技巧

    跨域 作为一个前端开发者来说不可避免的问题就是跨域 那什么是跨域呢 跨域 指的是浏览器不能执行其他网站的脚本 它是由浏览器的同源策略造成的 是浏览器对javascript施加的安全限制 浏览器的同源策略是指协议 域名 端口都要相同 其中有一
  • 与大多数台式机和移动广告软件说再见

    Some time ago I wrote an article where I described read it here an easy way to get rid of advertisements on your smart T
  • 解决go-cqhttp登录失败:密码错误或账号被冻结

    目录 前言 解决方法一 下载最新go cqhttp 使用方法 解决方法二 总结 推荐阅读 http t csdn cn nQfIY 前言 解决go cqhttp登录失败 密码错误或账号被冻结 解决方法一 下载最新go cqhttp 1 0
  • esp32 CMT130-V1.0 PS 240*240屏幕使用方法实验

    1 安装好Arduino 1 8 13 注意尽量不要大于1 8的版本 2 安装esp32驱动代码并且配置 3 esp32选择波特率 921600 4 选择频率 80MHZ 5 具体连线总结 6 需要在Arduino库管理中心下载TFT eS
  • HTTP协议(超文本传输协议)

    目录 1 HTTP协议介绍 2 HTTP协议格式 3 代码实现 1 HTTP协议介绍 HTTP协议是一个简单的请求响应协议 HTTP协议是一个明文字符串传输协议 便于调试 HTTP协议在传输层上基于TCP协议实现数据传输 本质上HTTP服务
  • BUUCTF[强网杯 2019]随便注 的三种解法

    文章目录 尝试注入 解题思路1 解题思路2 解题思路3 知识点总结 打开后题目是这样的 尝试注入 1 测试 1 or 1 1 初步判定存在SQL注入 1 or 1 1 再测试字段数 到3时报错 说明字段数为2 1 order by 1 接着
  • 测试开发1

    基本概念 一 测试开发基本概念 1 什么是软件测试 2 软件测试和软件开发的区别 3 你为什么选择软件测试 4 什么是需求 二 测试开发基础 1 需求是软件测试的依据 2 用户名和密码登陆测试用例 2 1 功能角度 2 2 非功能需求维度