【一文搞懂】软件测试基础入门到项目实战

分享十几个适合新手练习的软件测试项目 项目名:XX商城涉及端:电脑PC端、app端、H5应用端、小程序端在该项目中,你可以随性操作,肆意妄为。比如,你可以自定义商城页面:大部分项目是web项目,很难找到app项目,特别是有app安装包的项目大部分app项目只有前端代码,没有后端服务代码,你只能以“使用者”的角色练习大部分有app安装包的项目,项目作者提供的是试用app,很难保障个人隐私、账号安全等大部分项目缺少部署指南,看起来一头雾水有的项目涉及的业务,如果你缺少业务基础,很难上手,如支付、区块链、货币等。 阅读详情

测试理论

什么是软件:控制计算机硬件的工具,基本组成如下:

在这里插入图片描述

什么是软件测试:使用技术手段保障软件质量
  • 需求产生 – 需求文档 – 设计效果图 – 产品开发 – 产品测试 – 部署上线
  • 主流技能包含:
    • 功能测试 : 测试是否能输出文档中对应的结果
    • 自动化测试 :写代码自动测试 + 写测试报告
    • 接口测试 :通过代码或工具验证单人访问
    • 性能测试 : 通过代码或工具验证多人访问
软件测试分类:单元测试、集成测试、系统测试、验收测试;黑盒测试、灰盒测试、白盒测试
  • 按阶段划分:单元测试、集成测试、系统测试、验收测试
    • 单元测试:针对程序源代码、一般开发自己测试
    • 集成测试:针对模块之间访问地址进行测试,又称 接口测试,
    • 系统测试:针对整个系统的功能、非功能进行测试
    • 验收测试:使用不同人群发掘项目缺陷 – 主要分为内测,公测
  • 按代码可见度划分:黑盒测试 (功能测试)、灰盒测试 (接口测试)、白盒测试 (单元测试)
    在这里插入图片描述
测试模型之质量模型:衡量一个优秀软件的维度
  • 功能性、性能(服务器每秒处理请求数,服务器硬件配置是否满足)、兼容性(不同浏览器、不同操作系统、不同手机等)、易用性(简洁、友好、流程、美观)、可靠性(无响应问题、卡顿问题、死机问题)、安全(信息传输、信息存储)、可维护性、可移植性 (网站数据迁移)
  • 根据质量模型中的点启发 – 测试点的设计
软件测试流程:需求评审、测试计划与方案、测试用例设计、用例执行、缺陷管理、测试报告
  • 需求评审:确保各部门需求理解一致
  • 计划编写:测什么、谁来测、怎么测
  • 用列设计:验证项目是否需求的操作文档
  • 用例执行:项目模块开发完成开始执行用例文档实施测试
  • 缺陷管理:对缺陷进行管理的过程
  • 测试报告:实施测试结果文档
用例: 用户使用的案例
测试用例:为测试项目设计的执行文档
测试用例八大要素:用例编号、用例标题、项目/模块、优先级、前置条件、测试步骤、测试数据、预期结果
  • 用例编号:项目_模块_编号
  • 用例标题:预期结果 (测试点)
  • 项目/模块:所属的项目或模块
  • 优先级:重要程度或者影响力 P0~P4 (P0 最高,用户使用频率最高的)
  • 前置条件:执行此条用例,有哪些前置操作
  • 测试步骤:描述操作步骤
  • 测试数据:操作的重点数据,没有的话为空
  • 预期结果:期望达到的结果

测试用例设计方法示例

一、 穷举场景(等价类划分法)
  • 典型:页面的输入框测试

【需求】 用户名输入框:长度 6~12 个字符,只能包含字母和数字,首字符必须是字母
【划分】根据特征:长度、字符类型、首字符规则 → 等价类划分

特征有效等价类无效等价类
长度6~12 个字符小于 6 / 大于 12
类型仅字母或数字含特殊字符
首字符首字符为字母首字符为数字 / 特殊字符

【用例】(有效取1,每个无效取1)

用例编号用例标题优先级前置条件测试步骤测试数据预期结果
登录_输入框_001用户名符合规则 (6个有效字符)P0系统正常运行1.输入用户名, 2.提交abc123提交成功
登录_输入框_002用户名长度不足 (4个有效字符)P1系统正常运行1.输入用户名, 2.提交ab12提示长度不足
登录_输入框_003用户名长度超限 (13个有效字符)P1系统正常运行1.输入用户名, 2.提交abc1234567890提示长度超限
登录_输入框_004用户名含特殊字符 (6个含无效字符)P1系统正常运行1.输入用户名, 2.提交abc@@1提示非法字符
登录_输入框_ 005用户名首字符非字母 (6个含首字母数字)P1系统正常运行1.输入用户名, 2.提交1abc12提示首字符错误
二、 边界限制(边界值分析法)
  • 典型:输入框值判定

【需求】 年龄输入框要求输入整数,范围 18~60(含边界)
【划分】 根据特征:字符类型 → 等价类划分
【用例】 根据关键边界:18、60: 分别取等于边界(上点 * 2)、离边界最近的值 (离点 * 4)、边界内的值(内点 * 1)

用例编号用例标题优先级前置条件测试步骤测试数据预期结果
登录_输入框_000不合法(年龄非整数)P1系统正常运行1.输入年龄,2.提交H提示年龄非整数
  • 上面这条用例结合了等价类划分,因为边界值分析法无法测试类型缺陷;所以和等价类划分法结合使用
用例编号用例标题优先级前置条件测试步骤测试数据预期结果
登录_输入框_001不合法(年龄小于最值一位 – 离点)P0系统正常运行1.输入年龄,2.提交17提示超出范围
登录_输入框_002合法(年龄等于最小值 – 上点)P0系统正常运行1.输入年龄,2.提交18提交成功
登录_输入框_003合法(年龄大于最小值一位 – 离点)P0系统正常运行1.输入年龄,2.提交19提交成功
登录_输入框_004合法( 年龄在区间内 – 内点)P0系统正常运行1.输入年龄,2.提交39提交成功
登录_输入框_005合法(年龄小于最大值一位 – 离点 )P0系统正常运行1.输入年龄,2.提交59提交成功
登录_输入框_006合法(年龄等于最大值 – 上点)P0系统正常运行1.输入年龄,2.提交60提交成功
登录_输入框_007不合法(年龄超过最大值一位 – 离点)P0系统正常运行1.输入年龄,2.提交61提示超出范围
  • 进一步,根据 【开内闭外原则】,上述标红的用例可以省略不测;因为其所属类型已被上点包含,所以可以被优化 【7项 →5项】

三、 多条件依赖场景(判定表法)
  • 典型:输入框值判定

【需求】 优惠券发放规则: 根据是否会员(是/否) & 购物金额 ≥ 100 元(是/否) & 是否节日(是/否)

  • 会员 & 满100 & 节日 → 50元券
  • 会员 & 满100 & 非节日 → 30元券
  • 会员 & 不满100 → 10元券
  • 非会员 & 节日 → 5元券
  • 其他 → 不送券

【划分】 组合全部条件 → 判定表覆盖所有分支
【用例】 对于判定表中的每一项,设计一个测试用例

用例编号用例标题优先级前置条件测试步骤测试数据(会员/金额/节日)预期结果
购物软件_优惠券_00150元券 (会员 + 满100 + 节日)P0系统正常运行模拟下单是 / 是 / 是50元券
购物软件_优惠券_00230元券 (会员 + 满100 + 非节日)P0系统正常运行模拟下单是 / 是 / 否30元券
购物软件_优惠券_00310元券 (会员 + 不满100 + 节日)P0系统正常运行模拟下单是 / 否 / 是10元券
购物软件_优惠券_00410元券 (会员 + 不满100 + 非节日)P0系统正常运行模拟下单是 / 否 / 否10元券
购物软件_优惠券_0055元券 (非会员 + 满100 + 节日)P0系统正常运行模拟下单否 / 是 / 是5元券
购物软件_优惠券_006不送券 (非会员 + 满100 + 非节日)P0系统正常运行模拟下单否 / 是 / 否不送券
购物软件_优惠券_0075元券 (非会员 + 不满100 + 节日)P0系统正常运行模拟下单否 / 否 / 是5元券
购物软件_优惠券_008不送券 (非会员 + 不满100 + 非节日)P0系统正常运行模拟下单否 / 否 / 否不送券

四、 业务场景(场景流程图法) (最重要,首测)
  • 典型:输入框值判定

【需求】 电商下单完整流程:

否
是
否
是
开始
加入购物车
提交订单
库存足?
提示库存不足
结束
支付
支付成功?
提示支付失败
发货
确认收货

【划分】 基于流程图,识别正常及异常分支
【用例】 基于流程图分支,设计用例

用例编号用例标题优先级前置条件测试步骤测试数据预期结果
1正常(正常下单完成交易)高有库存可购买下单 → 支付成功 → 发货 → 收货确认库存足,支付成功完成交易
2异常 下单库存不足高无库存下单库存不足提示库存不足
3支付失败终止交易高有库存可购买下单 → 支付失败库存足,支付失败提示支付失败

缺陷 – 执行失败的用例

什么是缺陷:软件中存在的各种问题都是缺陷 (BUG)
缺陷衡量标准:多功能、少功能、功能错误、隐性功能错误、易用性
缺陷产生原因:产品需求、产品设计、编码、运行
  • 产品需求:需求描述不易理解、有歧义、错误等
  • 产品设计:设计文档中存在的缺陷
  • 编码:代码出现错误
  • 运行:软硬件系统本身导致的缺陷
缺陷分类:功能错误、UI 界面错误、兼容性、易用性、建议、数据错误、架构错误
缺陷管理流程:提交、验证、关闭
缺陷描述要素:缺陷编号、缺陷标题 (推荐格式:数据+实际结果,预期结果)、描述(前置条件、复现步骤、预期结果、实际结果)
缺陷提交要素:优先级、严重程度、指派人、状态
  • 一般是提交时候下拉框选 (不需要记忆选项,理解就行);确定可复现并且未记录(保证唯一性)之后再进行提交
  • 优先级:
    • Priority 0: 24h 内解决
    • Priority 1: 发布前必须修复
    • Priority 2: 可以再下一个版本中修复
  • 严重程度:
    • 严重(S1): 主功能
    • 一般(S2): 次要功能
    • 微小(S3): 易用性、界面
    • 建议(S4): 建议性问题
  • 指派人
  • 状态:
    • New:新建
    • Open:打开
    • Closed:关闭
    • Postponed:延期

完结撒花~~~

软件测试项目大全,看你需要哪一个 软件测试是使用人工或者自动的手段来运行或者测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。在软件投入使用前,要经过一系列的严格测试,才能保证交付质量。 阅读详情

相关推荐

软件测试最新项目合集【商城、外卖、银行、金融等等.......】

包含PC+IOS客户端+Adroid客户端+微商城,系统PC+后台是基于ThinkPHP MVC构架开发的跨平台开源软件,设计得非常灵活,具有模块化架构体系和丰富的功能,易于与第三方应用系统无缝集成,在设计上,包含相当全面,以模块化架构体系,让应用组合变得相当灵活,功能也相当丰富。新版在各版本基础上,重新设计系统架构,增加新功能及简化流程,实现业务自定义等,让平台更具智能化,快速响应,更有助于平台运营和发展。成熟的测试思维,通过“总-分-总”的方式,由浅入深,由单点到系统,在产品层面把控测试质量。

jj2772367224的博客 4970

让HR眼前一亮:30个APP项目软件测试经验,点燃你的简历

在求职过程中,我们都希望自己的简历能够吸引面试官的眼球,从而获得更多的面试机会。作为一名软件测试人员,丰富的实战经验是让自己脱颖而出的关键之一。 在我多年从事APP项目软件测试的工作中,我积累了大量的实践经验,并成功将这些经验写入简历中,让自己在众多应聘者中脱颖而出,最终拿到了心仪的工作。 今天,我想和大家分享我的经验,提供30个可写在简历上的APP项目软件测试实战经验,让你的简历更具吸引力,让HR眼前一亮,轻松拿下理想工作!

m0_70618214的博客 3万+

如何学习软件测试开发?从入门到精通?

如何学习软件测试开发?从入门到精通?刚开始学习软件测试的同学要经历一段从学习到入行再到熟练的过程。掌握软件测试基础知识、学习软件测试的思维、将理论知识运用到实践中,做到真正的理解软件测试的理论知识。作为软件测试工程师应该搞清楚软件测试工作的目的是什么。 如何学习软件测试开发 软件测试是一门新兴行业薪酬待遇好入门简单,需要掌握一定的编程语言基础,相关网络和数据库的基础知识及主要的软件测试理论。如果有基础有专业的人引导入门相对简单,因此建议最好找一个做测试工作的朋友指导学习效率最高。 向有经验的测试人员学习,如

m0_57290404的博客 793

十几个软件测试实战项目【外卖/医药/银行/电商/金融】

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

2301_78276982的博客 5407

从基础软件到工业软件:一文搞懂CNAS认可的14类软件测试领域代码

本文深入解析CNAS认可的14类软件测试领域,涵盖基础软件到工业软件的技术要点与实践指南。重点探讨三级代码分类体系下的测试方法论,包括操作系统内核稳定性、数据库ACID验证、工业软件数字孪生测试等核心场景,为测试工程师提供标准化框架和实战解决方案。

weixin_29310605的博客 442

基于继电器与三极管的自动水泵控制器DIY:从电路原理到PCB制作实战

继电器作为一种利用电磁原理实现电路通断控制的电气开关,其核心价值在于通过小电流信号控制大电流负载,实现强弱电之间的安全隔离。在自动化控制领域,继电器常与三极管等半导体器件配合,构成驱动电路,将微弱的传感器信号放大,从而可靠地控制电机、水泵等执行机构。这种组合技术广泛应用于工业控制、智能家居及各类电子DIY项目中,例如实现水箱水位的自动检测与控制。本文将以一个典型的自动水泵控制器项目为例,深入剖析如何利用继电器与三极管搭建水位检测与驱动电路,并详细讲解从电路设计、PCB自制(热转印法)到系统调试的完整工程实践

weixin_31774841的博客 347

如何介绍简历中的项目呢?请看软件测试老师的分享

项目经验与工作经验是相辅相成的,但较之于工作经验,项目经验更侧重于表现求职者在某个专业领域内的技能水平(技能水平决定了工资水平)。因而,技术类岗招聘的时候,更注重项目经验。项目介绍是有套路的,面试时,要将简历中的项目准备好! 目录 一、应该去哪里找项目? 二、这么多项目我该怎么选择适合自己的项目呢? 1、挑选项目的4个小原则 2、手把手教你如何在项目网站上找项目 三、如何搞懂挑选的项目? 四、如何将项目写到简历中呢? 1. 项目描述(可参考项目网站中的项目介绍) 2.负责模块(可根据熟悉或掌

m0_57290404的博客 1万+

Git系列(一)、Git基础教程【建议收藏】

Git一、Git简介1.1、什么是Git? 一、Git简介 1.1、什么是Git? Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。 Git与常用的版本控制工具CVS、Subversion等不同,它采用了分布式版本库的方式,不用服务器端软件支持。 .........

一宿君 4万+

一文搞懂软件测试,完整总结软件测试基础知识

一、软件测试的基本概念 1.测试是软件生存周期中十分重要的一个过程,是产品发布、提交给最终用户前的稳定化阶段。 2.软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序内部结构而精心设计的一批 二、软件测试的目的 1.基于不同的立场,存在着两种完全不同的测试目的。 2.从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。 3.从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,

曲鸟 4181

Python爬虫案例:从39问医生网爬取口腔科的在线问答记录(单轮问答)

本次实验爬取39问医生网中口腔科分类下的所有在线单轮问答记录,每页32条,共100页,总数据量为3200条,最终结果以excel格式保存。

JieBao11的博客 1642

机械设计师必看:如何用Autodesk Inventor高效完成钣金设计(附实战案例)

本文为机械设计师详细解析了如何利用Autodesk Inventor Professional高效完成钣金设计。文章通过一个钣金防护罩的实战案例,系统介绍了从核心设计逻辑、建模流程、参数化技巧到工程图输出的完整工作流,旨在帮助设计师掌握智能化的设计方法,显著提升从概念到制造的设计效率与准确性。

honey的博客 1181

【测试基础篇1】一文搞懂软件测试基础知识,开启测试之路,走向测试人生巅峰

本文用通俗易懂的话语讲述了软件测试的定义、目的、原则、对象、分类以及测试流程,开启大家的软件测试学习之旅,也欢迎喜欢测试的小伙伴们留言交流。

代码搬运工的博客 2152

【DIY】使用STM32及PID算法实现一个磁悬浮玩具

今天教大家来做一个磁悬浮玩具。

小白白学电子 1万+

软件测试最全《MetaSploit渗透测试魔鬼训练营》之信息搜集(2),一文搞懂

简单的扫描有Ping、arping、arp-scan、nbtscan,过于简单,工具不在于多,会一两个就可以了。薛定谔的Oracle,一会儿有,一会儿没,端口还不确定,当然后面下节的表格写的正确的。(img-0tKqC7fN-1715554494943)]三个不要求设置,三个要求设置的也有两个有值了,差一个RHOSTS没有设置。图形化界面推荐zenmap(nmap的图形化界面,很简单,不写了)可以下载网站的html、css、js文件等,多注意js。| 端口/协议 | 服务 | 软件版本 |

2401_84562858的博客 1091

利用Langchain生成合成数据的实践指南

合成数据是相对于从真实世界事件中收集的数据而言的人工生成的数据。它用于模拟真实数据,同时避免隐私泄露或遇到真实数据中的局限性。:尽管合成数据有诸多优点,但应谨慎使用,因为它可能无法捕捉真实世界的复杂性。

eahba的博客 397

Android HTTPS抓包证书配置全解:Proxyman实战避坑指南

HTTPS抓包本质是中间人(MITM)通信的可信建立过程,其核心在于客户端对代理根证书的信任链配置。在Android平台,自7.0起系统默认不信任用户安装的CA证书,必须通过Network Security Config显式声明trust-anchors,将Proxyman导出的PEM格式根证书纳入App级信任锚点。这一机制区别于iOS和桌面浏览器,导致大量开发者卡在‘证书已安装却无法解密’的误区。技术价值在于打通开发调试闭环:精准定位SSLHandshakeException、绕过证书固定、支持React

weixin_32175665的博客 650

在职阿里6年,一个29岁女软件测试工程师的心声

简单的先说一下,坐标杭州,14届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少)

自动化测试技术栈 6万+

OpenClaw 运行时错误文档:Embedded Run Agent End with Stream Error(嵌入式运行代理结束流式错误)

OpenClaw运行时错误文档:EmbeddedRunAgentEndwithStreamError(OC-ERR-009) 该错误表示LLM提供商在流式传输过程中发生服务器端异常(HTTP 500),属于可恢复的中等严重性错误。典型表现为日志中出现包含"stream_error"和500状态码的错误信息。系统会自动进行错误分类(50%为服务过载,25%网络问题等),并通过内置机制尝试解决:包括模型切换、API密钥轮换和自动重试策略。用户可采取重试请求、切换模型或简化请求内容等操作,管理

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 551

软件测试新教程,职场涨薪的技术利器

在网上看到一位阿里在职6年的女软件测试工程师分享面试经历,她总结的失败原因就两点,而且看起来非常简单:系统知识了解不够全面,实际项目经验不够丰富。 截图来源于网络,如侵删 这两点看似平平无奇,却常常扼住了软件测试人的咽喉,很多时候感觉自己行了,但是面试的时候才发现还欠缺很多。 软件测试说到底是技术岗位,在技术不断更新迭代的时代,企业用人要求也越来越高,拥有过硬技术和实战经验才能拿到更高的薪资。 如今,软件测试已经成为进入IT互联网领域拿高薪的捷径之一,但是当机会来临的时候,你真的已经

m0_57290404的博客 4685

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

软件测试零基础小白学习知识点【基础版·详解版】

快速搞懂“软件测试是什么、做什么、怎么入门”,能独立完成简单功能测试!

student66666666的博客 1491

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

软件测试工程师的简历项目经验该怎么写?

想要找一份高薪的软件测试工作,简历项目必不可少(即使是应届生,你也要写上实习项目)。所以很多自学的朋友找工作时会碰到一个令人颇感绝望的拦路虎:个人并没有实际的项目工作经验怎么办?

自动化测试技术栈 3569

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

零基础能学软件测试吗?都学什么?

零基础能学软件测试吗?都学什么?软件测试对代码的要求不像其他编程学科那么高,对零基础小白用户很友好。当然,你要想清楚,是不是真的下定决心想要学习,如果决定了,那就要有一定的毅力和耐心,因为,无论你是自学还是找培训班,这都是一个枯燥的过程,坚持才能有结果;其次,你要有足够的时间,有计划的去学习,培训班的话要有4个月左右的时间能够学完,自学的话时间可能会拉长一些。 零基础怎么学习软件测试 零基础怎么学软件测试呢?对于零基础的小白,可以从网上收集一些学习资料,视频等,网上有很多免费的资源还是不错的。可以自己先去尝

m0_57290404的博客 343

软件测试教程,软件测试项目实战—微信小程序测试实战教程!

从基础到项目,从思路到实施,举一反三,触类旁通领悟测试设计,手把手教你搞懂微信小程序测试实战. 讲解方式: 课程内容条理清晰,目标明确,由浅入深,环环相扣。重点部分进行额外梳理和总结,更易理解和吸收。 课程亮点: 从基础到项目,从思路到实施,举一反三,触类旁通领悟测试设计,手把手教你搞懂微信小程序测试实战 课程内容: 1. 了解微信小程序基础内容 2. 能够快速熟悉微信小程序...

黑马程序员官方博客 1460

深度学习-从零基础快速入门到项目实践,这本书上市了!!!

本书从Python基础入手,循序渐进地讲到机器学习、深度学习等领域的算法原理和代码实现,在学习算法理论的同时也强调了代码工程能力的逐步提高。 本书共分为6个章节,第1章从零基础介绍Python基础语法、Python数据处理库NumPy、Pandas、Matplotlib、OpenCV的使用;第2章,主要介绍了机器学习算法的原理并配有代码实例,方便在理解原理的同时也能写出代码;第3章,主要介绍深度学习框架TensorFlow、Keras、PyTorch的API和网络模型的搭建方法,力保读者能够掌握主流深度学习

文山 1818

干货 一文搞定 pytest 自动化测试框架(一),一文搞懂软件测试架构

pytest 加载所有的测试用例是乱序的,如果想指定用例的顺序,可以使用 pytest-order 插件,指定用例的执行顺序只需要在测试用例的方法前面加上装饰器。应用场景:有时运行测试用例需要指定它的顺序,比如有些场景需要先运行完登录,才能执行后续的流程比如购物流程,下单流程,这时就需要指定测试用例的顺序。从上面的执行结果可以看出,执行时以 order 的顺序执行:order=1,order=3,order=-1。设置order的对应的num值,它就可以按照 num 的大小顺序来执行。

2401_84281615的博客 1348
上一篇: Qwen Agent 入门介绍与简单使用示例
下一篇: PyTorch 模型保存与加载 (速查版)
CODE_RabbitV
博客等级 码龄7年 2931粉丝 218原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值