敏捷软件开发与其他软件开发方法学最大的区别,在于敏捷是承认并拥抱变化的。为了这样的变化,敏捷的不同方法,比如极限编程、Scrum引入不同的技术实践和流程,像持续集成、测试驱动开发以及短迭代周期等,来确保即使在需求的快速变化下,也能保证交付的软件总是满足用户的需求,是高质量的价值交付。
从敏捷软件开发宣言来看,并没有涉及测试的内容,更不用提为QA即测试人员提供指导性的建议。就是以极限编程的14个推荐实践来看,表面上对于测试的提及也只是验收测试,甚至没有敏捷测试这个概念。这样让很多人一度认为敏捷软件开发是不是之以程序开发为导向的,是不是我们测试人员能从敏捷获得的直接支持少之又少,我们是不是被遗忘的一个种群?
答案必然是否定的。还以极限编程为例,除了验收测试以外,极限编程提及的完整团队、用户故事、短交付周期、持续集成等实践,都在从不同的维度对于测试工作的流程和方式甚至对它思考的角度提出了变化的要求。
完整团队从文化氛围和组织结构上明显区别与过往的测试人员参与感,测试人员不再是对软件系统质量负责的唯一角色,对质量负责的是全体团队成员的职责。用户故事改变以前对于软件系统功能和模块的划分,而是从交付的独立价值出发,改变了测试人员对于测试案例准备和验收的方法。短交付周期,无论是两周还是四周,都给整个团队带来了巨大的变化,开发和测试不再是独立而又顺序的过程,开发和测试互相穿插,成为一个快速反馈的过程。持续集成是软件系统开发过程的晴雨表,其中价值相当大的自动化测试仍然和我们的测试工作脱不了干系。
可见,敏捷和它的方法,虽然没有显式地给测试工作以指导建议,但隐式地要求了我们测试人员仔细思考测试本身在敏捷项目中所需要发生的变化,我们测试人员的职责和工作范畴发生了哪些变化。
与敏捷开发一样,敏捷测试针对不同的项目上下文和不同的团队组成和背景,有不同的适配模式。跟敏捷软件开发的宣言类似,敏捷测试也有一系列可以恪守的原则。经过不断实践和经验,ThoughtWorks的同事同样提出了《敏捷测试宣言》:
1、Collaborative ownership over detached objectivity
2、Targeted automation over widespread anti-regression
3、Defect prevention over defect reporting
4、Exploratory testing over predetermined scripting
第一点与完整团队有关。虽然独立的测试团队可以从外部视角观察软件质量,但真正的软件质量来自测试人员属于一部分的完整团队,不再区分彼此的开发团队和测试团队,不再有彼此分离的目标。整个团队为软件质量和客户价值共同负责。
第二点针对性自动化测试胜过广泛的回归测试。随着软件系统开发的进展,后期引入的新功能和缺陷都会带来大量和重复的回归测试,自动化测试是代替人工繁琐而无聊的回归测试的唯一办法。
第三点提到的如何对待缺陷恐怕是时下各个测试团队最为纠结的内容了。预防缺陷胜过报告缺陷,预防缺陷才是测试工作最大的价值所在。敏捷测试会尽早介入软件系统的开发过程,和业务分析师、客户分析需求和价值所在,以用户故事和验收条件来驱动开发,以短周期迭代和持续集成为反馈,可以尽早发现存在的缺陷,从而极大降低后期才报告以及修复缺陷所带来的高额成本。在我的团队,测试人员甚至可以和开发人员结对,共同确认缺陷根源,修复缺陷,并添加自动化测试确保缺陷不会再次发生。
第四点的探索性测试的重要性没有人会怀疑,测试人员可以凭借自己的经验积极、自由地发现质量问题,而不仅仅是反复运行已经定义好的测试。这样可以证明软件不仅仅做了它该做的事情,还证明软件没有做它不该做的事情。
在SQL Server中,使用数据库备份和还原工具可以创建数据库的拷贝,将该拷贝放到安全的地方,当服务器崩溃或数据被破坏时,该拷贝就可以用于还原数据库。这就是我们本篇文章要说的备份和恢复。
(1)完整备份与恢复
制作数据库中所有内容的副本,在备份过程中需要花费的时间和空间最多,不宜频繁进行
恢复时,仅需要恢复最后一次全库备份即可
备份:backup database 数据库名 to 备份设备名 with [name='备份的名称'][init /noinit]
<SPAN style="FONT-SIZE: 18px">backup database MagDB to MagDb_1 with init</SPAN> |
恢复:restore database 数据库名 from 备份设备名 with [norecovery/recovery]
<SPAN style="FONT-SIZE: 18px">restore database MagDb from MagDb_1 with norecovery</SPAN> |
(2)差异(增量)备份与恢复
只备份最后一次全库备份后被修改的数据,备份的时间和空间较少
恢复时,先恢复最后一次完整备份,再恢复最后一次差异备份
备份:backup database 数据库名 to 备份设备名 with differential [name='备份的名称']
<SPAN style="FONT-SIZE: 18px">backup database MagDb to MagDb_1 defferential</SPAN> |
恢复:restore database 数据库名 from 备份设备名 with [norecovery/recovery]
<SPAN style="FONT-SIZE: 18px">restore database MagDb from MagDb_1 with file =2, recovery</SPAN> |
(3)事务日志备份与恢复
只备份最后一次日志备份后所有的事务日志记录,备份时所用的时间和空间更少
恢复时,可以指定恢复到某一事务;可以将其恢复到某个破坏性操作执行前的一个事务,这是全库备份和差异备份所不能做到的,但利用日志备份进行恢复时,需要重新执行日志记录中的修改命令,来恢复数据库中的数据,所以通常恢复的时间较长;先恢复最后一次全库备份,再恢复最后一次差异备份,再顺序恢复最后一次差异备份以后进行的所有事务日志备份
备份:backup log 数据库名 to 备份设备名 with init/noinit
<SPAN style="FONT-SIZE: 18px">backup log DocDb to disk='c:\databak\DocDb_1.bat'</SPAN> |
恢复:restore log 数据库名 from 备份设备名 with [norecovery/recovery]
<SPAN style="FONT-SIZE: 18px">restore log DocDb from disk='c:\databak\DocDb1.bat'</SPAN> |
(4)文件和文件组备份与恢复
备份某个数据库文件或数据库文件组,必须与事务日志结合才有意义
恢复时,使用事务日志,使所有的数据文件恢复到同一个时间点
备份:backup database 数据库名 file='文件的逻辑名称'(filegroup) to 备份设备名 with init/noinit
<SPAN style="FONT-SIZE: 18px">backup database DocDb file='DocDb_Data' to disk='c:\databak\Docfile1.dat'</SPAN> |
恢复:restore database 数据库名 file='文件的逻辑名称'(filegroup) from 备份设备名
<SPAN style="FONT-SIZE: 18px">restore database DocDb file="DocDb_Data" from disk="c:\databak\Docfile1.dat"</SPAN> |
让您的数据万事无忧吧,做好备份,恢复,易如反掌。
《XPP极速编程实践》主要介绍了XPP的模式,在此模式下PD,Dev,QA,DevOps各角色的职责与定位,以及如何持续快速交付高质量产品。
XPP的模式--面向交付开发与传统的面向测试开发区别:
极限编程的模式,面向交付的开发:有测试的工作,但没有真正的测试环节存在。开发写完代码,直接上线。没有经过严格的测试,会不会出现质量倒退呢,其实是赋予测试一些定的含义。
开发在编码阶段加入:代码审查、单元测试、集成测试;在交付阶段:加入一个新的角色DevOps,从复杂的TC编写中释放出来,而是做用例审查、验收测试、自动化回归。
需要建立持续集成的开发环境,便于开发自行测试。
在Xpp模式下,人员的职责和定位:
如何更快的交付
1、需求管理方面:将需求拆分为小的端到端可测试的用户case,一个需求必须在一次发布中完成,实现小步快跑。
2、在开发过程中进行代码审查,单元测试,代码覆盖率,集成测试——达标后提交发布单,去掉了传统的测试环节。测试驱动开发编写自动化测试用例,促使提高设计的可测性。
3、持续的集成测试:单元测试 → 集成测试 → 系统级测试
4、规范的交付流程
5、充分利用各类工具和自动化平台。如淘宝现有的任务管理工具redmine、自动化发布平台、自动化测试平台TOAST、各类自动化测试工具(单元测试工:mocha,should;代码覆盖率工具:jscoverage;集成测试工具:helium)。
如何更好的交付
1、代码审查 & 持续集成。代码须由统一的负责人审核通过才能。分支开发,主干提交,对分支和主干建立持续集成环境,发布前自动化脚本去除测试代码。
2、测试驱动开发。PD、Dev、DevOps一起制定测试清单,在开发环境中测试通过后提交发布;进行增量式的开发:迭代过程,测试—编码—重构,测试先行
3、测试用例审查。以测试清单为评判标准,重点关注变更代码;保证主流程质量;定期做用例review,完善场景和用例;结合代码覆盖率报告进行单元测试代码审查;集成测试审查,前端的关注主流程,后端的关注接口和数据校验。
4、验收测试。由产品经理执行并确定具体的用例,主要关注用户体检、样式、浏览器兼容性等方面的问题。
5、建设发布通道
6、对发布过程进行质量控制。前端应用优先发布、自动化七层校验失败立即回滚,发布过程开发关注应用层面监控、DevOps关注发布层面的监控。
7、发布后的监控。系统级:CPU,Memory,Network IO,Disk IO等;应用级:线程,队列,对象,调用,日志等;业务级:产品级流程交互、数据展现等;用户级:用户行为关键指标变动等。 《XPP极速编程实践》主要介绍了XPP的模式,在此模式下PD,Dev,QA,DevOps各角色的职责与定位,以及如何持续快速交付高质量产品。
XPP的模式--面向交付开发与传统的面向测试开发区别:
极限编程的模式,面向交付的开发:有测试的工作,但没有真正的测试环节存在。开发写完代码,直接上线。没有经过严格的测试,会不会出现质量倒退呢,其实是赋予测试一些定的含义。
开发在编码阶段加入:代码审查、单元测试、集成测试;在交付阶段:加入一个新的角色DevOps,从复杂的TC编写中释放出来,而是做用例审查、验收测试、自动化回归。
需要建立持续集成的开发环境,便于开发自行测试。
在Xpp模式下,人员的职责和定位:
如何更快的交付
1、需求管理方面:将需求拆分为小的端到端可测试的用户case,一个需求必须在一次发布中完成,实现小步快跑。
2、在开发过程中进行代码审查,单元测试,代码覆盖率,集成测试——达标后提交发布单,去掉了传统的测试环节。测试驱动开发编写自动化测试用例,促使提高设计的可测性。
3、持续的集成测试:单元测试 → 集成测试 → 系统级测试
4、规范的交付流程
5、充分利用各类工具和自动化平台。如淘宝现有的任务管理工具redmine、自动化发布平台、自动化测试平台TOAST、各类自动化测试工具(单元测试工:mocha,should;代码覆盖率工具:jscoverage;集成测试工具:helium)。
如何更好的交付
1、代码审查 & 持续集成。代码须由统一的负责人审核通过才能。分支开发,主干提交,对分支和主干建立持续集成环境,发布前自动化脚本去除测试代码。
2、测试驱动开发。PD、Dev、DevOps一起制定测试清单,在开发环境中测试通过后提交发布;进行增量式的开发:迭代过程,测试—编码—重构,测试先行
3、测试用例审查。以测试清单为评判标准,重点关注变更代码;保证主流程质量;定期做用例review,完善场景和用例;结合代码覆盖率报告进行单元测试代码审查;集成测试审查,前端的关注主流程,后端的关注接口和数据校验。
4、验收测试。由产品经理执行并确定具体的用例,主要关注用户体检、样式、浏览器兼容性等方面的问题。
5、建设发布通道
6、对发布过程进行质量控制。前端应用优先发布、自动化七层校验失败立即回滚,发布过程开发关注应用层面监控、DevOps关注发布层面的监控。
7、发布后的监控。系统级:CPU,Memory,Network IO,Disk IO等;应用级:线程,队列,对象,调用,日志等;业务级:产品级流程交互、数据展现等;用户级:用户行为关键指标变动等。
比如说,我们现在需要建立一个数据库(create database),再建立一个表(create table),如果表的字段很少,手动添加就可以,一个一个插入到表中。
那么如果字段很多怎么办呢?一个一个地插入恐怕是不行了,即使手不累,用不了一会,脑袋也晕了~
那到底怎么办呢?别着急,批处理要大显身手了~~~
什么是批处理?
批处理:指包含一条或多条T-SQL语句的语句组,这组语句从应用程序一次性地发送到SQL Server服务器执行。SQL Server服务器将批处理语句编译成一个可执行单元(即执行计划),执行计划中的语名每次执行一次。
批处理是如何存在的?
脚本:批处理的存在方式,将一个或多个批处理文件组织到一起就是一个脚本,将脚本保存到磁盘文件上就是脚本文件。
例如,把查询语句都写在一个文本文件里,然后双击一个bat文件,就自动执行文本文件里的语句。
首先,新增一个批处理文件,linlin.bat
其次,新增一个SQL脚本文件,linlin.sql
在linlin.bat中输入:
<SPAN style="FONT-SIZE: 18px">osql -U sa -P 123456 -i c:\linlin.sql </SPAN> |
同样在bat文件中,输入上面一行,在linlin.sql输入脚本
如:
<SPAN style="FONT-SIZE: 18px">use 数据库名 go select * from 表名 go</SPAN> |
以上的小例子就是通过批处理来执行SQL语句,下面我们来说一下,建立批处理时的一些注意事项:
1、创建默认值CreateDefault、创建规则Create Rule、创建触发器Create Trigger、创建视图 Create view等语句在同一个批处理中只能提交一个
2、删除的对象,在同一批处理中不能再次引用
3、不能把规则和默认值绑定到表字段或者自定义字段上之后,立即在同一个批处理中使用它们
4、不能定义一个check约束之后,立即在同一个批处理中使用
5、不能修改表中一个字段名之后,立即引用新字段
6、使用Set语句设置的某些set选项不能应用于同一个批处理中的查询
7、若批处理中的第一个语句是执行某个存储过程的execute语句,则execute关键字可以省略
相信学会了批处理,在工作中我们会更加得得心应手,让数据来去自如。
SQL SERVER数据存储的形式
在谈到几种不同的读取方式之前,首先要理解SQL SERVER数据存储的方式。SQL SERVER存储的最小单位为页(Page)。每一页大小为8k,SQL SERVER对于页的读取是原子性,要么读完一页,要么完全不读,不会有中间状态。而页之间的数据组织结构为B树。所以SQL SERVER对于逻辑读,预读,和物理读的单位是页。
SQL SERVER一页的总大小为:8K
但是这一页存储的数据会是:8K=8192字节-96字节(页头)-36字节(行偏移)=8060字节
所以每一页用于存储的实际大小为8060字节。
比如上面AdventureWorks中的Person。Address表,通过SSMS看到这个表的数据空间为:
我们可以通过公式大概推算出占用了多少页:2.250*1024*1024/8060(每页的数据容量)≈293 - 表中非数据占用的空间≈290(上图中的逻辑读取数)
SQL SERVER查询语句执行的顺序
SQL SERVER查询执行的步骤如果从微观来看,那将会非常多。这里为了讲述逻辑读等概念,我从比较高的抽象层次来看:
图有些粗糙。
下面我解释一下图。当遇到一个查询语句时,SQL SERVER会走第一步,分别为生成执行计划(占用CPU和内存资源),同步的用估计的数据去磁盘中取得需要取的数据(占用IO资源,这就是预读),注意,两个第一步是并行的,SQL SERVER通过这种方式来提高查询性能。
然后查询计划生成好了以后去缓存读取数据。当发现缓存缺少所需要的数据后让缓存再次去读硬盘(物理读)
最后从缓存中取出所有数据(逻辑读)。
下面我再通过一个简单的例子说明一下:
这个估计的页数数据可以通过这个DMV看到:
当我们第一次查询完成后,再次进行查询时,所有请求的数据这时已经在缓存中,SQL SERVER这时只要对缓存进行读取就行了,也就是只用进行逻辑读:
摘要:软件测试作为软件质量保障的重要手段,PDCA循环是全面质量管理所应遵循的科学程序。本文结合软件测试工作的特点,通过文档规范的方式,将PDCA的理念融入软件测试,提出一套软件测试工作的流程。
关键字:软件测试、PDCA、测试流程
1、引言
PDCA循环又叫戴明环,是美国质量管理专家戴明博士提出的,它是全面质量管理所应遵循的科学程序。全面质量管理活动的全部过程,就是质量计划的制订和组织实现的过程,这个过程就是按照PDCA循环,不停顿地周而复始地运转的。PDCA 描述如下,PLAN:活动、控制、资源、目标;DO:按计划实施;CHECK:监控和测量一致性和有效性;ACTION:分析/回顾/改进/提高有效性。软件测试是有计划、有组织和有系统的软件质量保证活动,是软件工程的重要组成部分。本文结合PDCA循环对于质量改进的作用,依靠文档管理,将PDCA 理念融入软件测试。在软件测试流程中,结合PDCA 理念,各个阶段进行如此诠释,PLAN:编写测试计划;DO:按计划开展测试工作;DO:按计划开展测试工作;ACTION:维护测试文档。
2、PLAN:编写测试计划
软件测试组接到测试项目后,测试工程师首先编写《系统测试计划》,为本次测试工作做好安排。
根据研发部门提交的《项目总体需求说明书》《项目模块需求说明书》《项目概要设计说明书》《项目详细设计说明书》及《数据库设计说明书》等内容,测试工程师编写《系统测试计划》。测试计划中包含编写目的、参考资料、测试内容、测试环境、测试方案、测试通过标准、风险评估、测试组织和时间安排等内容,包括了PLAN中应该进行活动、控制、资源、目标等全部内容,实现了做测试工作的计划性。
3、DO:按计划开展测试工作
完成测试计划后,即按照计划的时间要求进行测试工作。
测试工程师依据《总体需求说明书》、《模块需求说明书》、《概要设计说明书》和《验收测试计划》分析测试需求,撰写该项目的《测试需求说明书》。软件测试的核心文件《系统测试需求说明书》是列出项目所有的测试点,保证了软件测试的有据可依。测试工程师根据《测试需求说明书》编写《测试用例》。
测试负责人依据《系统测试计划》及项目进度向测试工程师分配测试任务;测试工程师向测试负责人领取测试资料,执行测试。本轮测试结束后,测试工程师编写《系统测试报告》。
图1 测试设计工作流程
字体: 小 中 大 | 上一篇 下一篇 | 打印 | 我要投稿
4、CHECK:审核和评审测试文档
审核和评审是PDCA方法中最重要的组成部分,在软件测试中主要是依靠对测试文档的审核和评审,来保证测试工作的质量。
《系统测试计划》是测试工作的纲领性文件,是对整个系统测试的工作安排。测试工程师完成后,需要由测试负责人进行审核,审核通过后由研发和测试人员组成的评审小组进行评审,保证了测试计划的合理性。
《测试需求说明书》是整个测试工作的核心文件,列出项目的所有测试点。首先由测试负责人进行审核,审核通过后组织评审,项目经理和评审小组参与进行评审,要求有测试记录。从研发和测试的角度保证了尽可能不遗漏测试点,也能有效减少测试组与研发部门的分歧。
《系统测试用例》是根据《测试需求说明书》的测试点扩展而来,测试工程师完成后,由测试负责人审核《系统测试用例》,并提出修改意见。
《系统测试报告》是每轮测试结束后,测试工程师编写《系统测试报告》,然后测试负责人审核《系统测试总结报告》。审核通过后,将《系统测试报告》交给测试负责人、项目经理、评审小组成员进行审批;审批不通过,则测试人员进行修改;审批通过,更新系统测试用例后,一轮测试结束。
图2 系统测试工作流程
5、ACTION:维护测试文档
文档《系统测试计划》和《测试需求说明书》都需要经过测试负责人的审核和评审小组的评审,《系统测试用例》要由测试负责人进行审核,《系统测试总结报告》由测试负责人审核外,还要进行项目经理、评审小组成员进行审批和会签,在此过程中,会有很多测试工程师要按照评审意见进行修改,达到了分析改进提高的效果,保证测试工作的质量。
6、总结:提高测试工作效率
将PDCA方法融入软件测试工作流程中,使得测试流程更加规范,提高了测试工作效率。编写测试计划,使得测试工作按部就班;规范的工作内容,在各个阶段都明确的产出物,方便领导对测试工作的检查;增加测试文档的评审机制,既降低测试组与研发部门沟通成本,减少分歧,又提高了软件测试的质量。
版权声明:51Testing软件测试网原创出品,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。
http://www.51testing.com
完成测试任务
在大多测试职位中,通常都会提交Bug。Bug质量和描述都很重要,建议:
● Bug简述应一目了然,不能含糊,长度不得超过30个字。
● 提交的Bug应用客观的书面语,避免使用口语。
● 测试中一旦发现BUG,需要及时提交BUG。
● 在提交Bug前,应查询库里已有的Bug,防止同样的Bug重复提交 。
● 优先级别、严重性级别、重复性定义尽可能准确。
● Bug描述中千万不要有错别字,在细节处也都要随时体现质量人员的素质。
总之,按时、高质量地完成安排的任务,这是最重要的。在这一过程中,如遇上问题,需要及时想办法解决;若自己无法独立解决,应及时请教别人。总之,一定要准时、高质量完成任务,如无法完成,一定要提前报告给你的上级。
你做到了吗?
进入公司后,能够快速熟悉公司文化、开发及项目流程,并融入其中。转正前能够达到:
● 熟悉基本测试理论,熟悉业务标准,能很好地运用测试理论知识,独立编写测试用例设计。
● 熟练运用必要的测试工具。
● 独立、按时完成测试任务。
总结
亲爱的朋友,不知道这些内容对你是否有帮助?我只想告诉你们,不管遇上何种困难,只要有信心,努力后一定是可以解决的。我的一位老师曾经在我困难的时候说,可能这个世界从来都不是公平的,有的人生下来就拥有很多,而有的人注定要非常努力后才能获取那么一点点,但是永远别失去信心,相信自己努力后,明天一定比今天好!感谢曾经给我指导、帮助的朋友! 编者之话
亲爱的朋友,本文主要是针对打算进入软件测试领域的朋友们编写的。在我的面试经历中,我经常会遇见很多刚走出大学校门的朋友。他们都非常优秀,但是由于各种原因,例如因经济原因无法参与专业培训、短期无法找不到工作而准备放弃在大城市奋斗等,在职业选择方面非常迷茫。我非常希望能将自己的经验跟大家分享,如能对年青朋友们有一些帮助,我就非常高兴。感谢你们阅读本文,谢谢!
职业发展
“你为什么选择软件测试?”。面试时很多人回答:“因为软件测试简单”。这样的回答其实很糟糕。如果你是真心喜欢、热爱这个行业,再加上你的认真、踏实、负责、以及良好的团队合作等,恭喜你,不管你的计算机基础如何,你都能在软件测试行业有很好的发展前途!
入门
当你决定进入软件测试行业,若你对软件测试还不太了解,我建议你去书店选择软件测试相关书籍学习几天(特别提醒:对于重点知识、疑问等需做好笔记,并及时查阅资料将疑问解决掉)。经过这一阶段的学习,你可以知道哪些书写得比较好,可以从中买下1-2本书带回家仔细研究!
面试
恭喜你获得面试机会。这时候,你应该真诚、勇敢地参加面试。面试的时候,眼光请一定要正视考官,把你自信、优秀的一面充分展现出来。
入职
恭喜你进入软件测试行业。通常,通过一个月左右的时间熟悉、学习业务知识,如果你能顺利地把测试理论知识很好地应用于实际工作中,并按时完成上级安排的测试任务,到第二、三个月时你就基本具备独立执行测试任务的能力了。我相信,你一定能顺利转正。
测试用例设计
理论与实践相互结合是非常重要的。不知道其他公司对测试用例设计如何看待,而我始终是特别重视的。
对于踏入这个行业的新人,我通常会花一周左右的时间对他们进行测试用例设计方面的培训,重点指导新人们如何将理论用于实践。
测试用例模板
我相信每家公司都有自己的测试用例设计模板。我采用的测试用例设计模板主要包含:
● 最小功能测试集:用于简单、快速地验证系统是否满足基本的功能需求(最小功能集最好能够做到全部自动化);
● 复杂功能测试集:用于进一步验证系统能否在复杂、或不常见的合法输入和操作下正常运行;
● 健壮性测试集:用于测试系统能否在各种异常输入、异常操作或者异常环境下正常响应,以及检测在出错之后系统能否正常运行,是否造成数据丢失、是否毁坏其它相关的软件和硬件等;
● UI测试集:编写跟UI设计相关的测试集。
说明:
最小测试集、复杂测试集、以及健壮性测试集都是根据需求、使用测试用例设计方法编写的。UI是根据产品UI设计文档编写的。
在编写测试用例的时候,需要思考以下几个问题:
● 为什么功能性测试用例必须覆盖全部需求?
这问题不回答了,大家一定理解。
● 哪种测试用例便于他人审核是否有效?哪种测试用例便于增加、删除、修改?
具有树型结构、清晰层次关系的测试用例。审核人员一般会先审核树枝是否全面覆盖需求、是否有冗余,然后再审核树叶是否全面、是否有冗余。如果具有这样的层次关系,用户也能很好地维护测试用例。
● 哪种测试用例便于多项目共用?为什么要将功能与UI测试测试集分开?
在测试用例设计中,将功能与UI测试用例分开,这样对于功能相同的需求,功能性测试用例就可以在多个项目中通用。为了功能性测试用例能够在多项目中通用,功能性测试用例需 要使用通用词语描述。UI用例应该只描述各产品UI的一些约束部分,参考后面电话模块测试用:当电话拨号盘没输入号码,键盘“灰显”等,这约束跟具体项目有关,属于UI用例。
需求模块划分
在设计测试用例前,充分理解需求是非常必要的。在此基础之上再对需求进行模块划分,形成一棵需求树(说明:划分模块的时候,需求可以重复。但重复不宜太多,否则需要思考划分的模块是否合理?)。
电话模块需求树例子:
(未完,见下页续表)
(续表)
根据需求编写测试用例
基于需求的模块划分结果,结合边界值、等价类等测试用例设计方法,根据测试用例设计模板,编写功能性测试用例,即编写基本功能、复杂功能、健壮性测试用例。
注意事项:
1、理解测试用例设计方法特别重要。常用的测试用例设计方法有等价类、边界值等,建议大家能深入理解,针对不同类型的需求就可以选择一种或多种适宜的测试用例设计方法编写测试用例。
2、建议每个测试目的下的测试用例不超过10条。如超过10条,需要再提出一层。这样做的目的,是便于自己和他人审核,因为单个目的下的测试用例如果太多,容易导致审核人员的思路混乱,从而很难对测试用例提出有效的改进意见!
电话模块测试树例子:
没错,任何软件都存在
bug,哪怕是我们自己也存在缺陷,因为程序员也是普通人,人是会犯错误的。当有人在使用软件时遇到bug,你需要使用邮件形成一份缺陷bug,发送给开发人员。开发者可以依据该报告定位问题,复现问题,修复问题。
但是很多时候,开发人员很难理解提交上的缺陷报告,因为发送人并不了解我们需要的是什么,那如何与开发人员沟通以及如何写出一份缺陷报告,在这篇文章,我将教你如何写出一份清晰的缺陷报告能使开发者理解、复现、修复问题,这里下载缺陷报告模板。
为什么要发送缺陷报告
缺陷报告可以用很多方式来帮助我们的开发者。
● 他们能告知我们没有意识到的问题
● 他们能发现我们可能还没想到的新特性
● 他们能帮助我们感受到客户是如何使用我们的软件,以至于我们可以做的更好
没有这些缺陷报告,我们就不知道出错的地方,我们需要它就像你唱歌跳舞时需要有软件的支持一样。
什么时候发送缺陷报告
● 简单来说就是越快越好,详细来说就是:
● 当你看到一个错误消息时就发送错误报告
● 当屏幕是空白或者数据缺失就发送报告
● 当程序没有出现预期的结果时发送报告
● 当程序崩溃、死机、没有响应或者响应很慢时发送报告
● 当程序返回错误结果时发送报告
● 当你得不到想需要的结果时发送报告
● 如果你不清楚怎样做时发送报告
● 如果你不喜欢软件做的方式,或者软件老打搅你时,发送错报告
● 如果你想在系统中实现一个变通方案时发送报告
缺陷报告需要有哪些内容
缺陷报告应该包含很多信息,你提供的信息越多效果越好,对于开发者,就像我,提供一个纯文本文件模板给你填充然后邮件发给我,当然也有表格形式的,但是最期待你自己杜撰一份然后发给我。下面是一些必须包括的部分以及如何写好每部分:
标题:创建一个简短的标题,让问题看起来更清晰。“应用崩溃”是一个很恼人的标题因为它没有足够的信息包括在这份报告里面。取而代之的是标题应该包含错 误消息和消息码,或者是结果的名称以及失败时你正在做的事情。例如:Error 402:访问拒绝当点击“发送邮件”这个例子就提供了缺陷系统的上下文信息。
差:“程序崩溃”,“报错”,“Bug”
好:“从’Kifu’中打印时5C79错误”,“’Kifu honors’报表为空”
产品:用名称标识产品,告知你使用的是哪个版本。绝大部分软件都包含有版本信息。web应用的版本信息通常在页脚。
差:“你的应用”
好:”Kifu v1.01″
平台:告诉我们软件运行在什么平台。尤其是操作系统的名字及版本和游览器名称版本。特别是web应用,这些信息对我们很重要。
差:“Windows”
好:“Windows7,IE9”
是否能重现:有些恼火的Bug是间歇性的出现,我们想预先知道,如果我们正在处理一个灵异事件或者正逢Bug出现时。
差:留空白
好:“每次”,“偶然”,“不重现”
描述:这部分是很多人拿不定的地方,不知道怎么描述问题,在描述中做到包括下面的内容:
● 总结:用简洁的语言概括出Bug出现时你正在做的事情。从上下文开始,在操作应用的哪个部分。聚焦在你做的时候软件做了什么?
差:“系统不能用了”
好:在“honor report”页面单击“打印按钮”,但是报表是空的。
● 发生了什么:一步一步描述你做的事情当bug出现时,为什么你认为是错误的。事无巨细,打印出菜单的名称,页面标题,点击时的按钮或者链接的名称。做相同的操作是不是出现一样的错误。
差:“空白报表”
好:“点击 ‘File/Save as…’,’Save‘对话空弹出,然后点击‘OK’按钮,但是文件没有保存”
● 错误时什么:如果错误消息出现时,拷贝粘贴整个信息,这样更有利于我们跟踪错误。
差:“有个错误,点击它始终读不出”
好:“Error 403:访问拒绝”
● 复现的步骤:如果你可以让bug重现,那太好了,这能提供很大的帮助。一步步描述如何重现次bug。
差:“打印没法使用”
好:“从‘Honors Report’页面,点击‘打印按钮’”
● 预期结果:描述你预期发生的结果当bug发生时,这部分特别有用如果程序没有按照你期待的结果发生时,因为它很诡异。
差:“我期待能正常工作”
好:“我期待能看到‘Honors Reports’的PDF文件”
真实结果:当bug发生时是怎么发生的,什么错误,为什么有错,或者如果错误抛出,抛出什么错。
差:“没法用”
好:“我收到是空的PDF文件,或者’403错误,访问拒绝’”
● 附件:如果你知道怎么截屏,做吧,附上一个简短的错误,截屏可以是错误之前或者发生错误之后,我们的开发者能够看到究竟发生了什么。如果应用有崩溃的日志,同样附上它。
● 联系方式:附上你的名字和email,我们可以让你提交的报告及时的得到答复,在我们不理解问题的描述时还能够询问你,如果你忘记附联系方式了,我们也就没法联系到你,也没法修复bug。