Mao
type: channel
link: https://xaomao.cc/
description: 个人分享
items: 产品规范文档编写指南
items: 《淘宝十年产品事》学习笔记
items: 产品经理经典面试题问题拆解与思路
items: 认知偏差手册
items: 软件测试知识
items: esp8266加0.91寸oled显示屏制作天气时钟
items: Axure中引入Echarts图表并制作元件库
items: KANO模型
items: 《别让我思考》学习笔记
items: 《移动产品设计逻辑》学习笔记

产品规范文档编写指南
type: item
date: 2024-02-07T10:34:00+08:00
description: 最近工作中，总是会遇到一些在需求理解、UI设计上和开发产生分歧的地方，有的东西可能产品经理认为是常规设计，都能理解，不一定需要标注出来，但实际过程中并不一定所有的开发会这样思考，对于需求的理解也可能存在差异。这个时候就需要对产品或项目进行标准化规范，以解决需求设计、UI设计、开发流程上容易被忽视的问题。产品规范的存在，就是为了让设计更容易也更方便，团队之间步调一致、配合默契。产品规范就是队伍里的队规，让团队成员遵循一致标准，这样才能打造成风格统一、易用性强的优秀产品。大家可以根据实际工作流程来编写自己内部的产品规范，下面我根据我的工作流程整理了一份产品规范文档，仅供参考。1. 项目流程规范1.1. 产品开发流程1.2. Bug提出与处理流程Bug提出与修复Bug及时上报。评估严重程度、优先级、受影响的范围、时间范围、影响用户量，同步测试同学复现 bug。Bug 处理方案的决策。根据 bug 的严重程度和优先级来做第一轮判断。不严重的 bug、低优 bug 可以先进 backlog；未来版本可能改版或者废弃的模块产生的 bug，可放弃修复。处理需要修复的 bug。第一步是复现 bug，第二步是分析产生原因；第三步是给出修复方案。根据优先级和开发成本，在有了修复方案之后，需要在决策重新对 bug 进行修复的优先级排序。因为可能一个中优的 bug，需要巨大的修复成本。这种时候我们可能就需要将优先级稍稍往后，同时选择从产品或者流程上规避这个 bug。所以这个是对 bug 的再次梳理，给出新的方案。（可能涉及到跨部门协同）复盘先从 bug 的影响上开始分析，再从解决方案的决策上给出解释复盘研发链路上是否有疏漏整体上分析和回顾大的流程上是否存在问题，再从细节出深挖问题的根结给出避免的方案，不论是加强沟通还是统一编码风格，还是 code review 的加强从整体到细节，给出完整的 bug 原因，以及完整的避免思路2. 需求输出规范2.1. 需求设计规范需求设计时，要考虑或遵守如下7个方面：需求背景与目标介绍该需求设计的业务背景、市场环境和目标用户群体。明确项目的业务目标和预期的用户收益。梳理需求背景与目标，便于讨论需求合理性、可行性，便于后续需求归档。用户需求详细列出目标用户群体的具体需求。对这些需求进行优先级排序，划分紧急度与优先级。功能需求基于用户需求，详细描述系统所需实现的功能。包括功能的交互行为、约束条件、权限要求和性能要求等。非功能需求安全性：包括用户数据保护和系统访问控制。性能：如系统响应时间、并发用户处理能力。可扩展性与可维护性。操作日志要求等。数据管理如何收集、存储、处理和显示数据。数据初始化、存量数据处理等要求。数据保护和隐私方面的要求。设计原则 需求设计时，需遵循如下原则：操作简便：确保所有功能易于访问和使用。一致性：维持整个系统的设计风格和操作逻辑一致性。容错性：系统应能妥善处理用户的错误操作。反馈：用户在操作中能得到适时的响应与反馈。修订历史记录文档的版本控制。2.2. 需求文档输出规范传统需求文档，常常以纯文档形式输出，交互图写在文档内，对于开发者来说总是晦涩难懂。采用新的形式来呈现：依托于Axure制作的原型图，需求说明和设计说明直接融合在原型交互中。Axure文档结构如下：需求概述概述：需求背景、需求价值、功能点竞品分析版本更新日志需求说明功能需求：在原型图进行标注（页面说明、功能说明、交互注释）非功能性需求可以根据自己业务需求，编写自己的需求文档模板，注意如下内容：功能说明：对于每个原型图，都应该有一个简短的文本说明，描述该图所代表的功能或用户故事，确保开发人员不看文字描述时也能理解。交云层注释：使用Axure的“注释”功能，在原型上标注更加详尽的说明，如功能逻辑、交互规则、异常处理等。版本控制：原型的迭代很快，需要有一个清晰的版本控制机制，有修改请及时更新到原型或及时备注出来，确保团队成员总是在查看最新版本的文档和原型。非功能需求：性能指标、安全策略、响应时间等不方便在原型上表达的内容，需要在文档中另行说明。数据字典：如果产品处理复杂的数据，应该有一个数据字典或数据模型的说明，方便开发人员理解并按需设计数据库。附件与链接：将相关的技术文档、市场研究报告或其他参考资料以附件形式提供，或在文档中插入链接。导航和目录结构：如果需求文档内容繁多，应该有清晰的导航和目录结构，便于团队快速找到对应的部分。反馈和修订历史：文档应允许团队成员提供反馈，并记录修订历史，让每个人都能看到需求的变更。2.3. 数据埋点规范数据分析当前使用的神策数据，数据埋点请遵守神策埋点要求：数据融合 (sensorsdata.cn)埋点及数据分析等相关名词及使用指南参考神策帮助中心：产品使用指南 (sensorsdata.cn)3. 开发基…

《淘宝十年产品事》学习笔记
type: item
date: 2023-06-30T15:51:00+08:00
description: 第一章大概是介绍结构和为什么写这本书，我就不多加阐述了，直接从第二章开始。一、从商品说起1. 一个买家的淘宝之旅淘宝的网站框架：第一种，Detail页面，好比新浪的一篇新闻，相对静态，主要用于展示信息。第二种，List页面，比如Baidu（百度）的搜索结果，是一个引导性的过程页面。第三种，交互页面，需要用户填各种表单、需要互动的页面，比如各大网站的注册页面。第四种，综合页面，就是其他很难分类的，或者前三种混合的页面，呵呵，比如淘宝的购物车页面，就混合了List和交互。2. 产品经理都是分类控随着商品多起来以后，才牵扯到分类。因为我们有了很多商品以后，就需要管理，而管理首先需要将商品梳理清楚，分清楚，不能10亿商品一个个管，这样做没有意义。“分类”方法的变迁是整个商品系统变迁的核心。3. 看似完美的类目+属性淘宝小二对业务的理解有一个过程，商品管理的本质是分类（再深究一步，分类是为了更好地匹配供求关系）。一灯，提出了属性的概念，属性很好地解决了前面提到的两个问题。与类目相比，属性更离散、更灵活，类似 Tag，一个商品只能属于一个类目，但可以有多个属性。属性的本质还是为了分类。属性的本质还是为了分类？其实很简单，卖家发布商品的时候，先从根目录选到叶子类目，再选择这个叶子类目对应的类目属性的各种属性值。体现在前台则是，买家在挑选商品的时候，也能从类目和属性两个维度筛选。4. 解决问题，而不是做产品解决问题，或者说满足需求，通常有三种方法——提高现实、降低期望、转移需求，而最常用的“开发产品”只是第一种，也是最费劲的一种方法。二、“淘宝”就是导购1. 淘宝的由来fun、生活化、亲切、屌丝气质……的格调，淘和宝。变化很多，但产品经理要理解变化背后的目的，以及哪些东西是不变的。2. 导购到底是什么玩意儿一群买家，从某个购物需求出发，通过某个产品功能，最终到达一个商品详情页面的过程，或者说，都是“导购”。2009年，一级类目的频道首页开始TMS（小二使用的，淘宝内容管理系统）搭建。这个强大的TMS工具颇值得一提，它可以根据各种条件，筛选商品、配制出活动页面，甚至配置出垂直市场而无须技术人员介入。从另外一个角度来理解导购，那就是经济学上的“供求匹配平衡”。我们通过对淘宝供求关系所处的不同关系的分析，制定我们的经营策略与重点，并以此为根据为买家提供购物决策产品。具体说明如下：当商品供应量远小于买家需求量时，需要为有需求的买家提供预订服务、资讯服务、订阅提醒服务。对有相应能力的卖家提供相关的情报，以刺激市场发展。当商品供应量近似于买家需求量时，关注需求的满足率，通过细分人群，为不同人群提供不同的导购决策产品，来降低流失率。当商品供求量远大于买家需求量时，需要对有需求的买家做优质商品和卖家的推荐，以及促销活动的推荐，并且针对不同人群提供不同的决策树。对没需求但有可能购买的买家做信息推送，以扩大需求量。同时为卖家提供付费型的营销工具。需要说明的是，产品经理们将针对特定类目甚至热门搜索关键词来判断上述供求关系。分得越细提升越明显。针对淘宝大盘整体分析，意义不大。90%的产品经理，其实都是在守江山，在已有的产品上做优化，如果能摊上做一个天猫这样的挑战，虽说失败的概率很大，但无论成败，都为个人之幸。产品经理确实就是小部分打江山、大部分守江山，历史也是这样的。天猫初始商品体系：天猫与淘宝的异同：从模式上，一个是C2C平台，一个是B2C平台对卖家和淘宝来说，天猫和淘宝的区别还是很大的：天猫的主要盈利模式是收取销售佣金，按照类目不同，从货款的百分之零点几到百分之几不定；而淘宝的盈利模式主要是各种广告。我们深刻地认识到，任何一款产品、一个公司，甚至一种业态都是有生命周期的，要想长青，只能自己打败自己。基于同样的思考，后来，我们又做了“C2B平台”的聚划算，因为消费者的需求越来越个性化，各种商业基础设施也日趋完善，大家都看好消费驱动生产是一个趋势，B2C只是零售，B2C平台是商业地产，都是老东西，而C2B才是产业链、经济模式的再造。回头看看淘宝，也是阿里巴巴B2B业务为了防止被eBay打败而做的。3. 向超市学习，前后台类目拆分简单地说就是：卖家通过后台类目发布商品，买家通过前台类目选择商品。类目拆分为前后台的好处很明显，用相对固定的后台类目可以衍生出一个随时变化的前台类目，后台类目满足卖家，前台类目满足买家，皆大欢喜。后来，淘宝网、天猫、电器城等都是在同一套后台类目的基础上衍生出了不同的前台类目，以满足不同的需求。4. 旧的新概念：SPU/SKU及其他像服装的话，品牌和货号，这两个属性值组合起来，能够形成一个唯一确定的产品——SPU。SPU相当于标准化的产品，通过关键属性的确定，就确定一个SPU，苹果的iPhone5S就是一个SPU。SKU（Stock Keepi…

产品经理经典面试题问题拆解与思路
type: item
date: 2023-04-05T22:41:00+08:00
description: 导语：本人2021年毕业，工作近两年，最近准备面试，总结一下网上经典面试题及个人思路，希望对初中级产品有一定帮助。一、产品经理具备的能力与素质不同级别的产品经理面试时考察的能力是不一样的，我主要讲下产品所需要的基本能力。产品所需的能力一定跟所要做的事情息息相关，所以这个问题的拆解思路就是项目或需求的执行思路。需求的处理流程从需求处理的流程，也就能了解到产品经理所需要的基础能力有哪些。需求获取在需求获取阶段，我们需要做好收集需求和管理需求两件事情，数据的来源，我一般分为三种：数据分析、业务需求、产品规划。这也就要求我们具备数据分析能力、管理能力、同理心。需求分析 需求分析主要从需求要素、定位、分解、优先级四个方面进行。这样就要求我们具备逻辑思维能力、分析能力、同理心。方案设计方案设计时一般需要做：方案设计、方案对比（竞品分析）、可行性分析、方案确认。我们需要具备学习能力、分析能力、创造力。方案执行方案执行需要需求评审、确认迭代内容（需求优先级管理）、测试验收。需要我们具有执行力、沟通协调能力（项目推动能力）。需求管理与优化功能完成了并不代表结束了，需求方案上线还只是开始，要想知道这个需求是否真正达到了预期效果，发挥出了真正价值，还需要持续跟踪监测。需要我们具备数据分析能力、管理能力。综上，从需求处理流程，我们也就知道了产品经理所需要的基础能力和素质是哪些：执行力学习能力沟通协调能力（项目推动能力、团队合作能力）逻辑思维能力分析能力创造力同理心当然，这只是基础能力，要成为高级产品经理还需要很多能力或思维方式。二、项目延期怎么解决此问题考察的是沟通协调能力以及项目推动能力。第一点，项目延期怎么处理？了解情况：了解不能按时上线的原因及需要延期多长时间上线；知会需求方：确定影响范围，知会需求方，讨论解决方案；确定解决方案：协调资源解决；或者砍掉非核心功能保障上线时间点。第二点，怎么避免项目延期？保障产品文档质量，避免需求变更导致延期，前期沟通评审功课做足；合理评估时间，设置任务里程碑，及时跟进进度，发现风险点；建立一个内部网络空间，所有文档资源统一存放，供团队成员共享；制定制度和标准，实行奖惩措施，制度和标准及其重要。三、做过的项目中，你觉得最成功的的项目或者产品是哪一个，为什么？首先这个问题考察2个点：第一个即什么才能算成功的项目或者产品，从3个方面回答：这个项目或者产品给用户带来了哪些价值（用户体验、服务提升、解决了什么痛点），给公司带来了什么价值（产品带来了多少利润，提升了多少用户量，提升了多少活跃等），自己在项目中获得了什么（能力的提升，价值的体现，解决了什么问题）。第二个考察的点即是项目描述的能力，产品经理能不能很好的对项目进行复盘，能不能清晰描述一个完整的项目经历。这里很多文章都提到过的STAR法则，运用这个法则可以很好的描述一个项目，这里就不展示论述。产品经理要学会讲好一个故事，让面试官不感到枯燥。四、产品的需求来源有哪些个人在做需求的时候将需求划分为三个来源：业务需求。用户意见反馈、客服反馈、用户调研访谈、内部其他业务方需求等。数据分析。很多时候的需求都需要数据支撑，并不一定业务需求就合理，也需要数据支撑做分析。产品规划需求。产品自身迭代过程中规划的一些大功能模块等需求。五、你怎么去划分需求的优先级划分需求优先级可以采用两种方式，一种是紧急重要度划分，第二种是采用KANO模型去划分。紧急重要度划分比较简单，这儿简单讲下KANO模型首先需要对需求分类：基本需求，期望需求，兴奋需求，无差异需求，反向需求。其次是按照要求对优先级进行划分，划分标准按照用户满意度（需求价值）和实现难度来进行。基本需求 > 兴奋需求 > 期望需求 > 无差异需求，其中兴奋需求和期望需求还需要再根据具体情况来讨论。基本需求：必须要有的基本需求，没有用户会很不满意，有了用户也不会为此感到满意；期望需求：如果这个需求有，用户会感到满意，如果没有用户满意度会下降；兴奋需求：如果这个需求超过用户预期，达到用户兴奋，则会满意感大大提升，没有的话用户满意度也不会降低；无差异需求：又或者没有，都不会影响用户的满意度，用户不在意； 反向需求：少数派需求，做了就会产生负面影响。六、你的产品方法论是什么简单的产品方法论可以从需求处理流程来思考：需求来源（需求获取）、需求分析、方案设计、方案执行、需求管理与优化。当然，要成为大佬，肯定不能只有这点简单思考。下面讲几种大佬的产品方法论。1. 苏杰：Y模型和四轮MVP理论Y模型苏杰的Y模型很硬核，告诫我们不要按用户的反馈指导出方案，要充分挖掘用户背后的真实需求。①是代表用户需求场景，是起点，是表象，是需求的第一种深度，观点和行为，即在什么场景下什么目标用户的什么时间操作下的什么需求；②是代表用户需求背后的目标和动机，需求的第二…

认知偏差手册
type: item
date: 2022-09-04T17:54:00+08:00
description: 一、决策、信念与行为偏差​ 认知偏差多半会影响信念的形成、商业与经济决策、以及其他一般的人类行为它们是可复制与再现的，面临特定情境时，一般可预期人们会有相应的偏差倾向。1. 不明确性效应(Ambiguity Effect)我们倾向于避免未知，决策时避开资讯不足的选项。示例：用户在决策时，会避免自己不清楚的选项，我们可以通过添加明确的细节来最大程度地减少歧义，提高转化率。CTA（行动召唤） 按钮应在其旁边包含信息性标签，以清除不确定性。2. 锚定效应(Anchoring Effect)人们在对某人某事做出判断时，易受第一印象或第一信息支配，就像沉入海底的锚一样把人们的思想固定在某处。示例：一个很简单地销售经典案例：三款产品价格、功能如下，最终销量如下。产品价格功能数量销量A130元31,200B440元9890C390元8200,000消费者的想法：A比起另外两个有点太便宜了，功能也少了很多，看起来质量也很差。B、C看起来功能差别不大，价格还差了不少，仔细看了C缺的功能，觉得没必要为了这个鸡肋的功能多花50元，于是把注意力放到了C上。C比A功能强大，比B物美价廉，还等什么？这就是锚定效应的威力，商家的精准刀法就是利用锚定效应。在用户认知价值的过程中，锚定效应是最关键的因素。3. 注意力偏差(Attentional Bias)一个人过度关注环境中的特定讯息 ，此时个体会忽视其他讯息 。注意力偏差可以解释一个人在被现有的思路占据时，没有考虑其他的可能性。示例：我们用淘宝购买一个确定型号的键盘，打开app后，我们第一时间就是找搜索栏，然后输入型号，从结果列表选择我们喜欢的。这个过程中，我们通常不关心app一共有几个tab页，也不关心首页上摆放了哪些东西。对于无关信息的不关注程度，其实超乎我们的想象。认知心理学把这个现象叫做“看不见的黑猩猩现象”。4. 获得性启发(Availability Heuristic)我们认为那些迅速跃入脑海的事情比那些不容易想起的事情更为常见和重要。因此，最近发生的、频繁发生的、极端的、被记住的事情比大多数信息更有影响力。示例：通过创建一些与众不同的东西（在不影响一致性和熟悉度的情况下）让你的设计被记住。5. 可获性层叠(Availability Heuristic)这个心理效应有一个更简单的描述，叫做三人成虎，也就是一件事越常被公开谈论，人们就越相信这件事。示例：创建一个醒目的标语，并确保重复多次。如果可能，这个标语以押韵结尾会更好。6. 确认偏差 Confirmation Bias当人们本来就持有某种观点时，对这种观点的感知和注意度会被放大，会选择性地回忆或收集关于它的事例。人们对于自己原本就相信的观点会更容易接受，而把反面观点搁置在一旁。示例：在用户研究中，当你的预设想法是用户对A设计的满意度比B设计更高时，在研究中你可能会更关注用户提到的A设计的优点、收集更多用户对于A设计的正面评价。当用户表示对A设计满意时，会觉得“果然是这样”。这种偏误会让你遗漏许多其它信息。7. 逆火效应(Backfire Effect)我们不能轻易改变人们的信念：与根深蒂固的信念相反的证据和论据无济于事，只会巩固信念的地位。这是一种更严重的确认偏差，即当假设被相反的信息否定后，我们反而更加深信自己原本的假设。示例：外卖骑手或者四级听到其他用户、客服或者平台官方提供的证实他们的猜想是错误的信息后，有不少人反而会觉得“他们都是不清楚真相的”或者“官方的辟谣肯定是心里有鬼”，继而更加深信自己的猜测是正确的。8. 从众效应(Bandwagon Effect)我们经常会因为大多数人以同一种方式思考，而改变我们自己的想法。示例：我们在设计中可以营造出一种群体选择的效果来吸引更多的用户，通过展示购买人数和滚动播放购买信息来体现出该商品的热门，让正在犹豫的用户「随大流」下单购买。9. 信念偏差(Belief Bias)我们更倾向于接受与我们的先验知识相符的论点，而拒绝对该论点的反驳。示例：谈论产品的好处时，不要夸大其词。如果它好到让人无法相信，那么人们将不会相信它。10. 选择支持偏差(Choice-Supportive Bias)做出决定后，我们倾向于称赞我们选择的选项，然后降级其他选项。示例：在用户做出购买决定并成功达成交易之后，是用户分享产品（或添加评论）的绝佳时机；显示肯定的信息，并祝贺他们达成了这一步骤以激励用户。11. 知识的诅咒(Curse of Knowledge)当我们是某个领域的专家时，会不知不觉假设其他人和我们具有相同的理解能力，尤其是对于专业术语的使用。这个偏差来源于斯坦福大学心理学博士论文中的一个实验，实验要求一位敲击者在桌子上敲出一首耳熟能详的歌曲（如《祝你生日快乐》）的旋律，而另一个人作为听众辨认歌曲。敲击者认为…

软件测试知识
type: item
date: 2022-03-16T23:56:00+08:00
description: 1. 软件测试概述1.1 软件测试的定义(1) 1983年，IEEE给软件测试的定义：使用人工或自动的手段来运行或测定某个软件系统的过程，其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。(2) 1990年，IEEE再次给出软件测试的定义：①在特定的条件下运行系统或构件，观察或记录结果，对系统的某个方面做出评价；②分析某个软件项以发现现存的和要求的条件之差别并评价此软件项的特性。以上的定义都有一定的片面性。不能只对系统程序进行测试，找出系统程序中的错误，而对分析、设计等过程发生的错误视而不见。软件产品由文档、数据和程序组成，那么软件测试就是对软件开发过程中形成的文档、数据以及程序进行相关的测试。1.2 软件的缺陷等级划分软件缺陷的等级可以用严重性和优先级来描述：严重性：衡量缺陷对客户满意度影响的满意程度，分为致命错误，可能导致本模块以及其他相关的模块异常，死机等问题；常见的有严重花屏、内存泄漏、用户数据丢失或破坏、系统崩溃/死机/冻结、模块无法启动或异常退出、严重的数值计算错误、功能设计与需求严重不符、其它导致无法测试的错误， 如服务器500错误。严重错误，问题局限在本模块，导致模块功能失常或异常退出；常见的有：功能未实现，功能错误、系统刷新错误、数据通讯错误、轻微的数值计算错误、影响功能及界面的错误字或拼写错误。一般错误，模块功能部分失效；常见的有：操作界面错误，边界条件错误，提示信息错误，长时间操作无进度提示，系统未优化，兼容性问题。建议模块，有问题提出人对测试模块的改进建议。优先级：缺陷被修复的紧急程度；立即解决(P1级) ：缺陷导致系统功能几乎不能使用或者测试不能继续，需立即修复；高优先级(P2级) ：缺陷严重，影响测试，需优先考虑；正常排队(P3级) ：缺陷需要正常排队等待修复；低优先级(P4级) ：缺陷可以在有时间的时候被纠正。2. 软件测试的目的对于软件开发。软件测试通过找到问题缺陷帮助开发人员找到开发过程中存在的问题，包括软件开发的模式、工具、技术等方面存在的问题和不足，预防下次缺陷的产生。对于软件测试来说。使用最少的人力、物力、时间等找到软件中隐藏的缺陷，保证软件饿质量，也为以后软件测试积累丰富经验。对于客户需求来说，软件测试能够检验软件是否符合客户要求，对软件质量进行评估和度量，为了客户评审软件提供有力的依据。3. 软件测试的分类3.1 按测试阶段分类单元测试。验收软件单元是否符合软件需求与设计，开发人员自测。通常情况下是白盒的，对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试，及早的发现和解决不易显现的错误。单元测试的策略：逻辑覆盖、循环覆盖、同行评审、桌前检查、代码走查、代码评审、数据流分析。集成测试。将已经测试过的软件单元组合在一起测试它们之间的接口，用于验证软件是否满足设计需求。自顶向下集成：模块集成的顺序是首先集成主模块，然后按照控制层次结构向下进行集成，隶属于主模块的模块按照深度优先或广度优先的方式集成到整个结构中去。自底向上集成：从原子模块开始来进行构造和测试，因为模块是自底向上集成的，进行时要求所有隶属于某个给顶层次的模块总是存在的，也不再有使用稳定测试桩的必要。系统测试。将软件在实际环境中运行，并与其他系统的成分(如数据库、硬件等) 组合在一起进行测试。检查软件的行为和输出是否正确并非一项简单的任务，它被称为测试的“先知者问题”。是黑盒的。测试重点是整个系统的运行以及与其他软件的兼容性。系统测试包括：功能测试，性能测试，可靠性测试，安全性测试验收测试。主要对软件产品说明进行验证，按照说明书的描述对软件产品进行测试，确保符合客户的各项要求。它的测试数据通常是系统测试的测试数据的子集。验收测试包括正式验收测试，非正式验收测试：Alpha测试(α测试)和Beta(β测试)测试。3.2 按测试技术分类黑盒测试。也称功能测试或数据驱动测试。把软件(程序) 当作一个有输入与输出的黑匣子，它把程序当作一个输入域到输出域的映射，只要输入的数据能输出预期的结果即可，不必关心程序内部是怎么样实现的。* 常用的黑盒测试方法有：等价类划分法、边界值分析法、因果图法、场景法、正交实验设计法、判定表驱动分析法、错误推测法、功能图分析法。 * “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试，只有把所有可能的输入都作为测试情况使用，才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个，因此不仅要测试所有合法的输入，而且还要对那些不合法但是可能的输入进行测试。 白盒测试。又称逻辑驱动测试，结构测试。测试人员了解软件程序的逻辑结构、路径与运行过程，在测试时，按照程序的执行路径得出结果。白盒测试就是把软件(程序) 当作一个透明的盒子…

esp8266加0.91寸oled显示屏制作天气时钟
type: item
date: 2021-12-04T23:26:00+08:00
description: 前言上两周做了个客制化键盘，将esp8266改在键盘里面了显示始终天气等信息，演示视频看我B站视频：200块改的键盘，没错，你是来听歌的，五分钟剪的视频。键盘制作教程在最后的参考资料里，自行查看。之前在网上参考的教程代码都好古老了，一堆问题，而且断网后就会卡在一个界面，天气、时钟是一直在同步网络的，断网后就啥也没了。最近将代码改了下，包括如下功能：自动同步时间，断网后程序自动计时自动循环播放开机连上wifi后，同步三天天气信息，断网后展示断网前最新一次数据最后加上了我手写的文字，哈哈哈哈，可以自己根据代码改。用PCtoLCD2002自己手写或者图片都行效果展示代码/********************************************************************** * 项目：客制化键盘嵌入ESP8266 * 硬件：适用于NodeMCU ESP8266 + 0.91寸 128*32 oled显示屏 * 功能：连接WiFi后时钟+心知天气+手写文字，优化和改动了很多bug * 作者：米奇罗（茂茂） * 参考：Nemo_ssc bilibili UID:12772522 * 日期：2021/12/04 **********************************************************************/ //----------------------调用库头文件--------------------- #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> #include <ArduinoJson.h> #include <SPI.h> #include <Arduino.h> #include <U8g2lib.h> #include <Wire.h> #include <TimeLib.h> #include <WiFiUdp.h> #include <math.h> #include "DHT.h" #include <DNSServer.h> #include <ESP8266WebServer.h> DNSServer dnsServer; ESP8266WebServer server(80); U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); int sta = 0; //---------------wifi连接/API用户名密码信息---------------- const char *ssid = "CMCC-qD"; //WiFi名 const char *password = "nxzks6qu"; //WiFi密码 const char* HOST = "api.seniverse.com"; const char* APIKEY = ""; //API KEY 心知天气私钥 const char* CITY = "shenzhen"; //城市全拼 const char* LANGUAGE = "zh-Hans";//zh-Hans 简体中文 //------------------------------------------------------- //-----------------------天气参数------------------------- typedef struct { String date_m; String date_d; int code_day; int high; int low; int wind_direction_degree; int wind_scale; int humidity; }weather_date; //天气信息的结构体 weather_date day0,day1,day2; weather_date day0_new,day1_new,day2_new;//联网前最新数据 //------------------------------------------------------- //-----------------------定义常量------------------------- int Click = 0; //轻触开关引脚 int beep = 13; //蜂鸣器引脚 const unsigned long HTTP_TIMEOUT = 5000; //http访问请求 WiFiClient client…

Axure中引入Echarts图表并制作元件库
type: item
date: 2021-11-29T21:21:00+08:00
description: 前言作为一个产品经理，Axure肯定要熟练运用，但是要做高保真的原型图，在碰到要画各种图表时，脑瓜子嗡嗡响，我是自己画呢，还是截图呢，大部分人肯定选择截图，画？不可能画的，不得把我累死了，画个趋势图都够我打一把王者荣耀了。今天教你用Axure画可交互的EChart图表。原理先讲原理，原理很简单，其实网上很多都是利用Axure的内联框架，但是内联框架嵌入代码，只能生成HTML文件才能查看，且你自己嵌入的html代码在发布到Axure云无法使用，很鸡肋。其实原理就是元件在载入时（如果要单击时才出现，可以插入单击事件），触发javascript伪协议执行ECharts的js代码。听不懂？那按下面简单步骤copy就行了。很简单！！！后面还会讲如何将代码做成元件，下次自己就可以直接用了。步骤第一步 : 拉入一个矩形框，命名为 'ECharts' 。这个命名很重要，可以自定义随便取，但是要记住，后面要用。第二步： 新建载入时交互。第三步： 这一步很重要，注入灵魂。将以下代码拷贝到编辑值框。javascript: var script = document.createElement('script'); script.type = "text/javascript"; script.src ="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"; document.head.appendChild(script); setTimeout(function(){ var dom =$('[data-label=ECharts]').get(0); var myChart = echarts.init(dom); var option = { legend: {}, tooltip: { trigger: 'axis', showContent: false }, dataset: { source: [ ['product', '2012', '2013', '2014', '2015', '2016', '2017'], ['Milk Tea', 56.5, 82.1, 88.7, 70.1, 53.4, 85.1], ['Matcha Latte', 51.1, 51.4, 55.1, 53.3, 73.8, 68.7], ['Cheese Cocoa', 40.1, 62.2, 69.5, 36.4, 45.2, 32.5], ['Walnut Brownie', 25.2, 37.1, 41.2, 18, 33.9, 49.1] ] }, xAxis: { type: 'category' }, yAxis: { gridIndex: 0 }, grid: { top: '55%' }, series: [ { type: 'line', smooth: true, seriesLayoutBy: 'row', emphasis: { focus: 'series' } }, { type: 'line', smooth: true, seriesLayoutBy: 'row', emphasis: { focus: 'series' } }, { type: 'line', smooth: true, seriesLayoutBy: 'row', emphasis: { focus: 'series' } }, { type: 'line', smooth: true, seriesLayoutBy: 'row', emphasis: { focus: 'series' } }, { type: 'pie', id: 'pie', radius: '30%', center: ['50%', '25%'], emphasis: { focus: 'self' }, label: { formatter: '{b}: {@2012} ({d}%)' }, encode: { itemName: 'product', value: '2012', tooltip: '2012' } } ] }; myChart.on('updateAxisPointer', function (event) { const xAxisInfo = event.axesInfo[0]; if (xAxisInfo) { const dimension = xAxisInfo.value + 1; myChart.setOption({ series: { id: 'pie', label: { formatter: '{b}: {@[' + dimension + ']} ({d}%)' …

KANO模型
type: item
date: 2021-09-14T14:56:00+08:00
description: 原文链接：KANO模型：产品人必懂的需求分析法需求会因人而异，会因文化差异而不同；也会随着时间变化。作为产品设计者，我们应该持续调研需求，对产品进行迭代优化。在做项目做产品的过程中，作为互联网产品设计师的我们，经常会接到来自PM/领导/业务方等等的各种需求。有的时候，哪怕一个小功能、次次次级页面都会争得不可开交。这个时候怎么办呢？到底应该听谁的呢？哪个需求优先级高？哪种呈现方法是更靠谱的呢？今天我们就来聊聊一个非常实用的需求分级方法——KANO模型。一、什么是KANO模型？KANO模型是东京理工大学教授狩野纪昭（Noriaki Kano）发明的对用户需求分类和排序的有用工具通过分析用户对产品功能的满意程度，对产品功能进行分级，从而确定产品实现过程中的优先级。KANO模型是一个典型的定性分析模型，一般不直接用来测量用户的满意度，常用于识别用户对新功能的接受度。帮助企业了解不同层次的用户需求，找出顾客和企业的接触点，挖掘出让顾客满意至关重要的因素。KANO模型的需求分类在KANO模型中，根据不同类型的需求与用户满意度之间的关系，可将影响用户满意度的因素分为五类：基本型需求、期望型需求、兴奋型需求、无差异需求、反向型需求。1）兴奋型需求所谓暗处，用户意想不到的，需要挖掘/洞察。若不提供此需求，用户满意度不会降低；若提供此需求，用户满意度会有很大的提升。当用户对一些产品或服务没有表达出明确的需求时，企业提供给顾客一些完全出乎意料的产品属性或服务行为，使用户产生惊喜，用户就会表现出非常满意，从而提高用户忠诚度。这类需求往往是代表顾客的潜在需求，企业的做法就是去寻找发掘这样的需求，领先对手。2）期望型需求所谓痒处。当提供此需求，用户满意度会提升；当不提供此需求，用户满意度会降低。它是处于成长期的需求，客户、竞争对手和企业自身都关注的需求，也是体现竞争能力的需求。对于这类需求，企业的做法应该是注重提高这方面的质量，力争超过竞争对手。3）基本型需求所谓痛点，对于用户而言，这些需求是必须满足的，理所当然的。当不提供此需求，用户满意度会大幅降低，但优化此需求，用户满意度不会得到显著提升。对于这类需求，是核心需求，也是产品必做功能，企业的做法应该是注重不要在这方面减分，需要企业不断地调查和了解用户需求，并通过合适的方法在产品中体现这些要求。4）无差异需求用户根本不在意的需求，对用户体验毫无影响。无论提供或不提供此需求，用户满意度都不会有改变。对于这类需求，企业的做法应该是尽量避免。5）反向型需求用户根本都没有此需求，提供后用户满意度反而下降。总而言之，我们做产品设计时，需要尽量避免无差异型需求、反向型需求，至少做好基本型需求、期望型需求，如果可以的话再努力挖掘兴奋型需求。二、如何使用KANO模型？KANO模型分析方法主要是通过标准化问卷进行调研，根据调研结果对各因素属性归类，解决需求属性的定位问题，以提高用户满意度。1. 明确目的做之前，必须明白调研的目的是什么，是否合适用KANO 模型解决，为什么要用KANO 模型解决。例如：企业为卖家开发的CRM工具，随着卖家客户的不断增长，CRM系统中需引入一些新的功能满足其管理需求。而我们作为产品开发设计者，需要知道这些功能哪些是基本功能，哪些是增值功能，功能的优先级又该如何排列等等。KANO模型就可以帮助我们很好地贴合业务需求，从具备程度和满意程度这两个维度出发，将CRM中新增的功能进行区分和排序，从而知道：哪些功能是一定要有，否则会直接影响用户体验的（基础属性、期望属性）；哪些功能是没有时不会造成负向影响，拥有时会给用户带来惊喜的（兴奋属性）；哪些功能是可有可无，具备与否对用户都不会有大影响的（无差异因素）。2. 设计问卷此问卷调查表划分维度有两个：提供时的满意程度、不提供时的满意程度。而满意程度被划分为5级（非常满意、满意、一般、不满意、很不满意），因为人的满意程度往往是渐变的，而不是突变的。满意程度的文案可根据实际问题灵活修改，如使用（非常喜欢、理应如此、无所谓、勉强接受、很不喜欢 或者 非常有用、挺实用、无所谓、不实用、很不实用 ）更加形象的描述。例如：在【通讯录】中，是否需要直接提供「拨打电话」的按钮？问卷设置正反两题：1）如果我们在【通讯录】的客户列表中，提供“拨打电话”的按钮，你的感受是：A. 非常喜欢B. 理应如此C. 无所谓D. 勉强接受E.很不喜欢2）如果我们在【通讯录】的客户列表中，没有提供“拨打电话”的按钮，你的感受是：A. 非常喜欢B. 理应如此C. 无所谓D. 勉强接受E. 很不喜欢为了更加形象且一目了然，我们可以如下设计。填问卷的人只需要在空白处打勾打叉就好了，非常方便。设计问卷的过程中，有几点要注意：问卷中的每道题都涉及到正反两面，应适当给予强调，防止用户看错（比如正反对立…

《别让我思考》学习笔记
type: item
date: 2021-08-06T15:21:00+08:00
description: 这篇文章主要是一个学习笔记，然后记录下来分享给大家一些通俗易懂的交互知识。一、指导原则1.1 Krug 可用性第一定律"别让我思考"这个是交互设计里面最简单而又最重要的一条法则，Krug 在《Don't make me think》中说到”如果你只能记住一条可用性原则，那么就记住这一条“。Krug 在可用性测试中最常用的也就是这一条。简单举例说明，当然也是这本书里面的一些例子。一个找工作的网站。“工作”、“被雇佣的机会”、一个招聘的专有名词，你会怎么选择？第一个我会不假思索的点击，因为很通俗易懂，而第二个我会稍微思考一下，”原来点击就可以投递简历了“，第三个，我除了思考，我可能还得去百度一下是什么东西。最好的交互就是让一切变得不言而喻，不要让人思考，让人觉得毫不费劲，我看到就能使用。1.2我们如何在互联网获取信息网页制作者和阅读者的想法似乎并不一样，网页制作者会精心排班，挑选信息，他们以为阅读者会仔细的阅读然后思考，最后选择感兴趣的内容。其实阅读者的想法似乎与他们大相径庭，在以前没有人工智能算法的时候，网页不会给你推荐正好合口味的内容，如果运气好的话，你可能会瞄一眼标题，找到了感兴趣的，点击接着阅读。当然，现在的推荐算法实在是太强了，它可能比我还了解我，例如抖音，为什么你的抖音和你爸妈的抖音完全不一样，那只能说明，你们代购确实很大，哈哈哈！开个玩笑，其实抖音这类短视频的算法做得太好了，导致了跟之前完全不一样的情况，现在你会越看越着迷，而在十几年前，你可能翻了很久都没找到自己喜欢的东西。如果想要设计有效的网页，你必须了解三个事实，Krug提到。我们不是阅读，而是扫描其实这是一个优点，我们不应该所有内容都去阅读，而是筛选出需要阅读的内容，要善于扫描。我们不做最佳选择，而是满意即可”寻找最佳策略很难，需要的时间也很长，满意策略效率更高。“可以加入埋点，让用户去做群体决策，统计用户对这个网页、按钮、方法到底满意不满意，当然，尽量缩小实验范围，不然可能损失很大！我们不是追根究底，而是勉强应付用户对于一个软件或者网页，并不需要理解背后的工作机制，往往发现能用，就不太会去找更好的方法，假如偶尔发现一种更好的方法才会去换。所以设计者应该站在用户的角度去思考这个产品的交互，是否让用户能一直使用，使用起来是否舒服，像上面所说，他不需要思考，还能应付自己的需求。1.3 广告牌设计101法则注意以下五个方面以留住用户：在每个页面建立清楚的视觉层次尽量利用习惯用法把页面划分成明确定义的区域明显标识可以点击的地方最大限度降低干扰建立清楚的视觉层次一个视觉层次清楚的页面，有三个特点：越重要的部分越突出。这点很好理解，就是突出重点。逻辑上相关的部分在视觉上也相关。这点怎么理解呢，个人觉得是通过将逻辑的相关性同时转为视觉上的相关性，除了可以让用户更好的理解逻辑外，也突出了交互上的层次。逻辑上包含的部分在视觉上进行嵌套。这点和上一点其实有一点雷同，就是为了增强关联性，这样也能让用户更好的理解逻辑。当然，这只是我个人的想法，理解有偏差的话，也欢迎大家一起交流。用户希望使用时得到编辑的引导，网站（内容）的发布者也更清楚哪些东西流行，哪些东西更有价值，这是一个双向过程，但是双方没有交流，而是通过网页的交互来互相“通气”的，就是取决你是否能吸引我的眼球。一个清楚的视觉层次的页面肯定要比杂乱无章的页面更受欢迎。利用好用户习惯为什么会讲到利用用户习惯，简单举个例子。大家肯定对于这个页面都很熟悉了吧，搜索栏在最显眼的位置，左上角是标签，下面是资讯。假如我把搜索栏放到资讯下面，用户进来找搜索框，你觉得有多少用户会下来资讯再寻找搜索框，大概率很多都不会，当然，这里不计较百度的品牌效应，且假设存在很多替代品的情况下。用户习惯了这种使用方式，如果我们要设计一个搜索网站，大部分都将搜索栏放在最显眼的位置，这就是百度、谷歌一类培养出来的用户习惯。当然，我们取消搜索框，将搜索框和地址栏结合，就想多年前的雅虎，并且就在地址栏（输入网页地址的地方），用户会选择使用我们的搜索产品吗，我想，会的，但是这样做如果没有比之前的方式好，那其实没有必要，因为培养用户习惯是需要成本的，且得思考，这样的方式是否比之前的方式要好，清楚、不言而喻、没有学习曲线的方法，能不能带来更大的价值，值不值得花费一定的成本去改变用户习惯。将页面划分为明确定义的区域划分为明确定义的区域很重要，这样能让用户更快地关注他们需要的地方，放心地跳过哪些区域，让用户扫一眼就能确定哪些区域包含有用信息。明显标识可以点击的地方我在工作中遇到过一个情况，做了一次简单的调研，在一个报表页面，点击数字或者鼠标悬停是可以查看信息的，但是大部分用户都不知道这个东西的存在，这其实是增加了用户的学习成本，看到这种地方，用户会产生思考，“这个能不能点”，这…

《移动产品设计逻辑》学习笔记
type: item
date: 2021-05-26T13:15:00+08:00
description: 第五章 文档管理 产品文档包括商业需求文档（BRD）、市场需求文档（MRD）和产品需求文档（PRD）。5.1 商业需求与BRD 通俗的说，描述产品及项目的商业需求，就是回答“项目有没有必要开展”“需要多少投入”和“多久能够盈利”的问题。5.1.1 商业需求解析 分别从战略、资本和模式三个方面阐述产品的商业需求，在考虑清楚这三个结构化的问题后，要把思考的东西落笔成文，输出一个结构化文档，这就是商业需求文档。5.1.2 BRD的撰写 一份完整的BRD至少需要包括一下四个方面的内容：项目背景：阐述为什么做（why）项目时机：为什么是现在做（when）项目规划：阐释怎么去做（how）项目收益、成本、风险与决策5.2 市场需求与MRD 市场需求是面向市场着重考虑产品定位和用户定位的问题，即市场是否真的存在需求空间，以及是否存在有此需求的用户群体。5.2.1 市场需求分析 无论是那一种用户定位，其实产品本身一定要清晰一点--在产品研发前，去设想哪些人是自己的主流用户，在产品上线推广之后，通过调查反馈来验证产品是否抵达了自己的主流用户。不管是面向大众还是面向小众，只有牢牢把握住主流用户，满足了主流用户的需求，才能真正支持起产品的生命力。5.2.2 MRD的撰写 一份MRD至少要包括一下方面内容：用户描述和市场描述。用户描述 用户描述主要是进行目标用户群体的确认，包括目标用户群的地域、职业、学历、婚恋状况等基本信息，还包括消费尺度、兴趣爱好、出行习惯、作息时间等特征信息。市场描述 市场描述主要是指市场规模预测，进行竞争对手产品分析（竞品分析）和SWOT分析。5.3 产品需求和PRD 一份PRD文档可以包括以下几个方面（根据具体情况而定）：功能需求列表预计版本规则与概念定义UI设计与展示原型展示第六章 用户体验6.1 用户体验概述 用户体验（User Experience，UE/UX）就是用户使用产品的所有童颜和感知的总和，这种感受包括心理层面和生理层面的，比如视觉感受、点触与反馈感受、认知感受、价值感受（是否满足了用户需求）、情绪感受、超预期感受（意外惊喜、收获）等。 奎瑟贝利5E原则，认为用户体验包括五个方面：有效性：产品能不能起到作用，可用性或有用性效率：产品应该能提高使用者的工作效率易学习：学习成本低容错：防止用户放错，以及修复错误的能力吸引力：从交互和视觉上让用户舒适并乐意使用 史蒂文·克鲁格提到的用户体验包括一下六个方面：有用性：能否帮助人们完成一些必须的事务可学习：人们能否明白如何使用可记忆：人们每次使用的时候，是否都需要重新学习有效：它们能否完成任务高效：它们是否只需花费适当的时间和努力就能完成任务合乎期望：是人们想要的吗 此外，ISO 9241-210 标准将用户体验定义为“人们对于针对使用或期望使用的产品、系统或服务的认知印象和回应”。 事实上，用户体验并不神秘，它本身的构成正是基于对“是否有效”“是否好用”“是否有吸引力”“是否易学习”等一般问题的回答。 我们把用户体验拆分为功能层、表现层和框架层。功能层由技术来决定，表现层由设计来决定，框架层由交互来决定。 用户体验设计就是“一切围绕用户体验而展开，一切又落脚于用户美好体验，真正践行以用户为中心，想用户之所想，想用户之未想”的设计。 用户体验设计首先聚焦在核心功能的实现，对于任何产品来说，功能是摆在第一位的，功能对应的是用户的需求或欲望。产品先有功能，再谈其他。6.2 从场景适配入手 所谓场景适配，就是在合适的时间和地点，为合适的用户提供合适的服务。6.3 于细节处深打磨 “最好的产品通常会做好两件事：功能和细节。功能可以吸引用户关注这个产品，而细节则能够让关注的用户留下来”。6.3.1 影响用户体验的细节打不开产品等待加载各种通知的干扰产品评分邀请频繁的升级提醒6.3.2 APP 产品的细节设计注意留白适时出现切准痛点符合本能6.3.3 APP 产品的细节设计要求 对于产品设计需践行12个字：功能可见、即时反馈、结果可期。产品的干扰功能不是细节产品的负面设计不是细节6.4 用户体验要素视觉要素反馈要素情感要素第七章 产品设计7.1 概念设计 现在的UI设计主要包括一下内容图标设计控件与其状态设计页面设计 除了界面设计、交互设计的说法之外，还出现了 GUI（Graphical User Interface，图形用户界面）、HUI（Handset User Interface，手持设备用户界面）、WUI（Web User Interface，网页用户界面）的概念。 区分了这些新的概念与表达，可总结出现在主要又一下三种设计方式：UID（User Interface Design，用户界面设计）UED（User Experience Design，用户体验设计）UCD（User…