我并没有什么方法,只是对于一件事情很长时间很热心地去考虑罢了。-- 牛顿
1. 设计是什么?
- 设计是有目标、有计划的创造和创作活动,按特定需求制定解决方案。
- 设计指把头脑中的设想/想法通过合理的规划、周密的计划、有效的方式表达出来的过程。

2. 设计的目的
- 从使用者思维角度、观点、立场出发,评价、看待问题,发现问题重点,构想和规划,找到解决方案
- 响应用户、满足需求、解决问题、提升信心、提高品质
3. 设计的基本原则
- KISS:Keep it Simple and Stupid,保持简单和愚蠢。设计越简单越好,任何没有必要的复杂都是需要避免。
- 奥卡姆剃刀:Occam's Razor。如无必要,勿增实体,Entities should not be multiplied unnecessarily。避重趋轻、避繁逐简、以简御繁、避虚就实。
- 5W1H:Who谁、When什么时间、Where什么环境、What做什么、Why为什么、How怎么样
- 用户故事:User Story,从用户角度出发描述用户希望得到的内容,包括用户、活动、价值(目标)3个方面。模式:作为一个<角色>, 我想要<活动>, 以便于<商业价值> (As a , I want to , so that )
- 合理规划、周密策划、预先计划
4. 设计的基本步骤
- 理解业务,了解业务规范、业务流程 -- 标准是什么
- 理清需求,明确用户动机、需要、期望 -- 问题是什么
- 明确资源,梳理技术、环境、时间要求及限制 -- 要求是什么
- 确认目标,确认设计对象(产品/服务)-- 做成什么样子
- 设计执行,将用户需求转化为对产品/服务的规划,使设计满足需求的形式、内容、行为,满足经济、技术可行性 -- 实现什么成果
- 改进更新,不断接收新的需求和业务信息,深入了解、不断改进 -- 改进完善
5. 软件测试设计
基本方法:提问题 -> 明标准 -> 确资源 -> 定操作
- 理解业务:软件应用行业是什么?行业标准是什么?基本的操作流程是什么?标准的操作过程是什么?行业队标有哪些?
- 理清需求:用户问题是什么?业务现状是什么?要做成什么样子?有什么特殊要求?
- 明确资源:技术要求?系统架构? 完成期限?实现内容?投入投资?
- 确认目标:系统名称?运行环境?功能集合?非功能集合?验收标准?
- 设计执行:测试对象?测试策略?为什么这么做?有什么处理异常?
谁(who),在什么时间(when)、什么环境(where)下,执行什么(what)操作、实现怎样(how)结果,为什么(why)这么做(有什么漏洞) - 改进更新:需求变了吗?设计变了吗?代码变更了吗?还有哪些遗漏?100%覆盖了吗?
6. 软件测试设计实例
先放一放,想来与测试策略和测试用例一起更合适。
7. 软件设计 与 软件测序设计
- 软件设计是为了构建满足用户需求的软件系统
- 软件测试设计是为了构建一系列场景、方法,以验证软件设计与实现符合用户需求
- 软件设计是“立”,软件测试设计是“破”