需求分析&用例编写
一、需求分析?
1.什么是需求
软件产品必须完成的是以及必须具备的品质。
功能性需求:产品必须完成的那些事,要求一定的功能和品质。
例子:淘宝的用户名登录。
非功能性需求:产品必须具备的属性和品质。诸如观感、可用性、安全性和法律限制等。
例子:平台用户数为5万人,每天登录用户数为10000左右,网络的宽带为100M宽带。在工作时间根据资料名称条件进行搜索,可以在3秒内得到搜索结果。
一旦知道了产品要做的事情,就可以确定它的行为方式,它需要具备什么品质以及它的响应速度、可用性、可读性和安全性。
限制条件:是全局性的需求。他们可以是对项目本身的限制,或是对产品最终设计的限制。
2.如何进行软件测试需求分析
测试需求分析的主要目的:根据需求文档提取测试点(测试执行的要点)---我都是用测试点做用例标题,根据测试点来编写测试用例
测试需求分析的步骤:
1.熟悉需求背景及商业目标:
a)了解清楚项目发起的原因,是为了解决用户的什么问题。
b)当前的解决方案是不是最优的,为什么会这样做?
2.业务模型法:
a)考虑本项目与外部系统的交互、划分系统边界(除了本项目的需求中要求做的事情,其他的都可以是外部系统,本系统和外部系统之间的交互就是系统的边界),可以参考系统分析说明书。
b)确定测试范围和关注点。系统的边界是测试的重点,特别需要关注边界交互时的数据交互。
3.业务场景法:
a)考虑用例的调用者;考虑每一个用例提供的服务时供哪些外部用例或者时系统调用,找出所有的调用者。调用的前提、约束都要考虑。每一个调用都可以考虑成一个大的业务流程。(一般和外部有交互的用例输出的概率比较大,需要重点关注)
b)考虑系统内部各个用例之间的交互,形成内部业务流程图。需求分析每个用例之间的约束关系、执行条件、组织出各种业务流程图。
4 、功能分解法
a). 业务功能:与用户实际业务直接相关的功能 或细节。
b). 辅助功能:辅助完成业务功能的一些功能或者是细节,比如,设置过滤条件。
c). 数据约束:功能的细节,主要是用于控制在执行功能时,数据的显示范围、数据之间的关系等。
d). 易用性需求:功能的细节,产品中必须提供,便于功能操作使用的一些细节,比如快捷键就是典型的易用性需求。
e). 编辑约束:功能的细节,在功能执行时,对输入数据项目的一些约束性条件,比如只能输入数字。
f). 参数需求:功能的细节,在功能中,需要根据参数设置不同,进行不同处理的细节。
g). 权限需求:功能的细节,这里的权限是指在功能的执行过程,根据不同的权限进行不同处理,不包括直接限制某个功能的权限
测试点分析:
- 通过分析需求描述的输入、输出、处理、限制、约束等,给出对应的验证内容;(功能测试)
- 通过分析各个功能模块之间的业务顺序,和各个功能模块之间传递的信息和数据,对存在功能交互的功能项,给出对应的验证内容(功能交互测试)
- 考虑到分析的完整性,要充分覆盖软件需求的各种特征,包含隐形需求的验证。比如界面的验证,注册账号的唯一性验证(界面、易用性、兼容性、安全性、性能压力)
在另一个博主哪里看到了一篇需求分析,推荐给大家。
https://www.cnblogs.com/spring_net/archive/2008/09/10/1288100.html
二、用例编写
用例:通过操作步骤来验证某个需求是否符合预期的结果。
1.测试 用例的重要性
- 测试用例是软件测试的核心。
- 评估测试结果的基准。
- 保证测试的时候不遗漏测试功能点,可以在测试人员疲惫的时候起到一个牵引的作用。
- 在编写测试用例的过程,可以熟悉需求,对系统架构或者业务流程有一个整体的,深入的了解。
- 好的测试用例不仅方便自己和别人查看,而且能帮助设计的时候考虑的更周全,因此测试的用例的写作和设计一样,也是非常重要的。
2.测试用例的八大要素
a.用例编号:产品名—测试阶段(st it ut)--测试项-xxx
b.测试项目:对应一个功能模块(细分功能)
c.测试标题:直接对测试点进行细化得出,输入内容+结果,同一功能模块标题不能重复,也就是分析需求的测试点
d.重要级别:高/中/低
e.预置条件:需要满足一些前提条件,否则用例无法执行
f.测试输入:需要加工得到输入信息,根据具体情况来设计(跟步骤结合起来一定要具体指导性意义)
g.输入步骤:明确给出每个步骤的描述,执行人员可以根据该步骤完成执行工作
h.预期结果:根据预期输出比实际结果,来判断被测对象是否符合需求。(预期结果唯一,不能出现“是、否、或者“)
i.实际结果
测试用例变更一定要把之前的用例备份
个人建议
1. 如果公司只有你一个Tester,就没必要写测试用例了,写测试点把,用思维导图(如Xmind)。
2. 如果需求老是频繁变化,测试用例的更新速度跟不上需求的变化速度,每天都在改用例。这样无太多意义和价值,还是写测试点把。
3. 如果项目比较赶,完全没时间严格按照测试用例执行,写测试点吧,提取关键要素,不过空闲时间的把用例补上。
4. 如果测试点已经能够保证充分覆盖了,测试用例的意义不大 。
5. 如何用更少的测试点,尽可能的充分考虑各种可能性呢?与用例设计方法、经验、需求理解等等有关。我们要综合运用等价类、边界值、错误推测、场景法、因果图等测试用例的设计方法。
写测试用例从产品需求开始,先把需求转为测试点,再根据测试点+用例设计方法+个人经验+测试用例的八大要素去写详细用例。
3.测试用例评审
用例评审的流程
- 评审材料准备好(主要是测试用例、评审检查清单)。
- 提前(2天)发布评审通知(OA通知、邮件、或者讨论组发布信息),同时将评审材料发送给评审组成员,以节约沟通成本。 主要的参与评审人员:项目经理、测试负责人、测试人员、产品经理、开发人员、UI。
- 召开会议评审;针对评审用例检查清单,评审过程中收集相关人员的反馈信息(既问题记录清单),并在此基础上进行测试用例更新,直到评审通过。
- 评审结束后,修改测试用例,并将修改后发送项目组人员查看,确认没问题,存档。
会议主持人:测试用例编写人——测试人员讲解用例+记录(用例修改意见)
需求分析&用例编写的更多相关文章
- UML和模式应用4:初始阶段(5)--用例编写的准则
1.前言 本文主要介绍用例编写时所遵循的几条基本准则. 2.用例编写的准则 2.1 以本质的风格编写用例 如系统认证,而不要说 需要输入ID进行认证等 2.2 编写简洁的用例 如系统认证,不要说 这个 ...
- APP手工项目02-用例编写-测试报告-fiddler弱网测试
回顾 APP专项测试(兼容性,安装,卸载,升级,交叉事件,PUSH消息,性能,其他类型) 项目环境(开发环境,测试环境,准生产环境,生产环境) APP内测发布平台(蒲公英,fir.im)支持apk,i ...
- python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)
经过之前的学习铺垫,我们尝试着利用pytest框架编写一条接口自动化测试用例,来厘清接口自动化用例编写的思路. 我们在百度搜索天气查询,会出现如下图所示结果: 接下来,我们以该天气查询接口为例,编写接 ...
- appium使用教程(三)-------------用例编写
1. 驱动 import os, time, unittest from appium import webdriver PATH = lambda p:os.path.abspath(os.path ...
- Python单元测试框架unittest重要属性 与 用例编写思路
前言 本文为转载,原文地址作者列举python unittest这个测试框架的主要属性和 测试用例思路 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行, ...
- Pytest用例编写1
一.编写pytest测试样例非常简单,只需要按照下面的规则: 测试文件以test_开头(以_test结尾也可以) 测试类以Test开头,并且不能带有 __init__ 方法 测试函数以test_开 ...
- unittest:1 用例编写
unittest是python自带的单元测试框架,包含测试用例case,测试集suite,测试集加载loader,测试执行runner,测试结果result等. 简单使用:写一个用例类继承自unitt ...
- python UI自动化实战记录七:页面2用例编写
使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 ...
- python UI自动化实战记录六:页面1用例编写
使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 ...
随机推荐
- oracle批量插入测试数据
做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条 SQL快速生成大量的测试数据的方法.产生测试数据的SQ ...
- 安装nginx和php
安装nginx 1.安装依赖包 yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel perl pe ...
- Kali Linux安装中文输入法全纪录
前言: 我使用的是英文版的Kali,默认没有安装中文输入法,也没有安装小企鹅(我后来才知道),折腾了很久,现在终于可以在Kali里输入中文了(这篇文章就是在Kali里面用leafpad写的).安装的过 ...
- MQTT, XMPP, WebSockets还是AMQP?泛谈实时通信协议选型 good
Wolfram Hempel 是 deepstreamIO 的联合创始人.deepstreamIO 是一家位于德国的技术创业公司,为移动客户端.及物联网设备提供高性能.安全和可扩展的实时通信服务.文本 ...
- 7-14 backbone源码
_.extend = function(obj) { // each循环参数中的一个或多个对象 each(slice.call(arguments, 1), function(source) { // ...
- JavaScript prototype原型和原型链详解
用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...
- nginx配置SSL实现服务器/客户端双向认证
http://blog.csdn.net/kunoy/article/details/8239653 本人不才,配置了两天,终于搞出来了,结合网上诸多博文,特此总结一下! 配置环境: Ubuntu 1 ...
- GitHub 系列之「团队合作利器 Branch」
Git 相比于 SVN 最强大的一个地方就在于「分支」,Git 的分支操作简直不要太方便,而实际项目开发中团队合作最依赖的莫过于分支了,关于分支前面的系列也提到过,但是本篇会详细讲述什么是分支.分支的 ...
- context.go
package nsqd type context struct { nsqd *NSQD }
- BZOJ_1369_[Baltic2003]Gem_树形DP
BZOJ_1369_[Baltic2003]Gem_树形DP Description 给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值, ...