软件测试资深讲师—————姜楠

发表于 2012-02-04 00:48 浏览次数:2,049 views 来源:

教 师 名:姜楠
所授课程:
软件测试工程师
讲师级别:首席讲师 

教师简介:中科院新科海学校软件测试工程师讲师。毕业于北京航空航天大学计算机科学与技术专业。软件测试工程师,项目经理,信息产业部软件评测师。多年软件测试工作经验,曾就职于海关总署数据中心,参与过全国海关报关申报系统,全国各部委企业信息联网系统等十多个大型分布式业务系统的测试、调优等工作。熟悉软件测试理论及测试方法,精通自动化测试及性能测试理论及工具使用。现任职于某知名美国上市公司。

如何挑选软件测试培训机构

发表于 2011-05-23 11:06 浏览次数:3,018 views 来源:
“圈外人”青睐软件测试

软件测试行业的巨大缺口吸引了众多求职者的目光,除了从业者外,“圈外人”对软件测试也表示了相当的认同度和满意度。这主要是由软件测试行业的特性决定的。首先,从目前市场需求来看,严重的供需失衡局面促使我国软件测试工程师基本上处于一个地位高、待遇高的“双高”地位;其次,质量是产品的灵魂,软件测试工作的重要作用,在软件产业中任何时候都是不可替代的,因而职业生涯更长久;再次,软件测试工作包含了技术及管理的各个方面,对年龄的要求也没有一定限制。因此,在竞争越来越激烈的IT职场中,软件测试工程师的工作相对来说更稳定、更有发展前景。
 
尽管期望加入软件测试行业者数量众多,然而能够达到企业需求的求职者数量寥寥。无论是有经验者还是无经验者,由于对软件测试缺乏系统的了解和足够的职业技能,均成为阻碍他们顺利进入的门槛。
 
机构选择要仔细

这些培训机构推出的培训各有特点,不能一概而论好坏,但如果要选择适合自己的培训,最好从以下几个角度来考虑。
 

选择培训机构,最首要的是选择讲师,说实在的,即使是完全一样的教材和讲义,不同的讲师讲出来,效果是完全不同的,因此非常有必要和你要加入班的讲师面对面谈一谈,看对方的资历和授课水平。如果对方只会夸夸其谈,没什么实际内容,或是只会照本宣科,基本上就不用考虑了。

选择培训机构要认准适合自己的课程。虽然所有的培训机构都会宣称自己的课程是最合理的,但是否真正适合自己是要打个问号的。一般的培训机构发布的公开材料上都不会有非常详细的课程大纲,因此一定要到培训机构找到详细的大纲看看。如果对方不能或是不愿提供详细的大纲,那就有问题了,因为这种大纲是培训机构必然会有的。

得到详细的大纲后要关注几点:
 
第一,课程中是否包括了完整的实践项目内容?如果没有一个完整的实践项目,或是只有一些零散的所谓的实际操作,这种课程的合理性就值得怀疑。
 
其次,课程中是否所有的内容都真正贴近测试?有些培训机构的课程中夹杂了大量的开发课程,而且还美其名曰“增加就业几率和择业范围”,实际上,如果培训机构对自己的测试课程培训出来的学员能否找到与测试相关的工作都心存疑虑,让人怎么相信?
 
第三,课程是否实用?如果纯粹的理论知识占据了大量的课程时间,这种课程一般就是所谓“空中楼阁”式的课程。
 
选择就业培训一定要选择行业内的专业企业,每个领域都会有不同程度的屏蔽,不可能在每个知识领域都是强者。

推荐课程:新科海学校软件测试工程师就业班————9月7日开班

由技术角度看自动化测试存在的误区

发表于 2011-03-24 12:12 浏览次数:755 views 来源:


  自动化的最终目标是什么?

  很多人以为是像工业革命一样消灭手工劳动者,在这里等于手工测试人员。但是测试存 在一个目前来看还算正确的、其他行业不多见的悖论:任何时候,你都不能准确知道还有多少bug,就像警察不能准确知道还有多少贼一样。所以自动化的最终目 标——目前来说——是解放尽量多的人手去进行更多的测试,除非有一种手段能像《少数派报告》里面的预言少女一样预知所有的bug。因为永远有bug,有未 知的bug,所以目前不存在能覆盖所有bug的手段,这意味着总需要人的参与。现代化手段只是减少了而不是杜绝对人员的需求。所以如果认为自动化工作一做 完就没活干,那你就大错特错了。正认为这些人闲下来,他们有空发现更难发现的bug。这本来没什么大不了的,但是搁在计划阶段如果过分乐观,牛皮吹得太大 的话,到后面就不容易圆回去了。因为按上面分析,自动化测试总有些地方是力有不逮的,如果这些地方没有安排好人手时间,只要在这些地方出大问题,那你就玩 完了。

  能否/怎样自动验证?

  这个问题每次复审测试计划的时候我都会问,针对每一个提出要实施自动化的地方。每个人、每个工具 谈论自动化的时候都在说如何真实模拟用户使用产品的情况, 这很好,绝对需要关心。不过我得问一句:测试的最后结果是什么?如果你回答“各种使用产品的场景已经运行过“就嘎然而止的话,你就漏掉了一大块:最起码还 得加上“产品能工作/不能工作“!所以模拟用户使用产品的各种情况,只是解决上述问题的第一部分;如何得出测试通过/不通过的最终结论,才是解决问题第二 部分的基础部分,还有详细缺陷描述、上下文数据收集等没做到呢!

  所以让机器像人一样使用产品,并没有解决全部问题,剩下的事情还有多少,这是需要视情况而定的。如果只是解决了第一个问题就认为万事大吉,那简直就是在赌运气——有些时候自动验证是小菜一碟,但很多时候不是。

  令事情恶化的是,自动验证了产品的一些指标,并不能反映产品的真实质量。有时验证过的指标通过 了,其实其他地方暴露了问题却没有检查:比如说界面说没有查询结果,这是期望的,实际上查询请求根本没有发过去,不去检查底下做了什么的话是发现不了这种 bug的;有时验证过的指标不通过,其实只是个小问题,大问题需要通过别的指标暴露出来的:比如说返回结果跟预期的不一致,实际上该有的都有,只是没有排 好顺序而已,但是被标记成重要的测试用例没有通过,把开发人员搞个鸡飞狗跳。

  这个话题深入下去,那就涉及到白箱测试策略、逻辑推演、嗅探和代码注入以及布景伪造(environment mockup)等领域,但我想强调的只是,如果考虑自动化测试,自动验证绝对不是可忽略的问题。

  整合现有还是自力更生?

  这个话题用于辩论赛是最好不过的,它符合“没有定论“这个要求 。所以我只谈一下使用每种手段时的一些不正确的假设。

  “现有的工具多少经过测试,质量比自己做的更有保证“。先不在“是不是更有保证”这个话题上钻牛 角尖,我们先关注几个问题:整个测试方案里面哪些部分是关键,质量不好会导致致命后果的?这些部分有专人保证质量吗?出事的时候反应时间和修复效果如何? 如果这些问题的答案是“我充分了解”或者“没问题”,那我也同意这个观点(我敢打赌,回答“不清楚”或者“很不妙”的人已经跑去重新考虑整个测试方案 了)。

  “整合现有的工具省时间和人力”。类似的几个问题:你能在这些工具中自由地调试产品的缺陷吗?整合方案能适应产品的演变吗?几个月后呢?几个版本后呢?有需要变动的话代价多少?(哗啦啦又跑掉一大队人了)

  “自力更生好控制”。投入产出比如何?引用的技术可靠吗?如果你是开发者(之一),别人都觉得好控制吗?谁来测试你的自力更生成果?

  “有些事情必须得自力更生“。剪裁现有工具难度如何?时间允许吗?

  其实,纵观所有提出的问题,我想强调的一点是,自动化测试的开发跟产品开发一样,也是需要规划和管理的,回答这些问题也是自动化测试项目管理的一部分。

  如何解决历史遗留问题?

  折腾上个版本的自动化测试框架是新人最头疼的事情。但了解了一些事情之后,原先的事情就没那么令 人头疼了。很多人忙于了解旧框架本身,其实世界一直在变,现在项目需要解决的问题才是关键。无论上个版本的东西多么辉煌,只有它适合现在的项目(的部分) 才是有价值的。所以关于旧的自动化测试技术,了解什么能用得上,而不是了解它是什么,才是需要做的事情。就好像汽车修理工知道怎样拆旧车零件来修新车,并 不需要他知道怎样造一辆出来或者知道怎样修好旧的那辆。

  另一个极端是“旧的不好浪费,继续用“。“能用“这个结论是基于以前项目的情况的,现在能不能用,值不值得用得看现在的需求。人们要理发就是个很好的例子:总不能因为头发长出来要耗养分不好浪费,就一辈子都不剪吧?

测试报告编写指南

发表于 2011-03-24 11:37 浏览次数:1,499 views 来源:


测试报告编写指南

摘要

测试报告是把测试的过程和结果写成文档,并对发现的问题和缺陷进行分析,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础。本文提供测试报告模板以及如何编写的实例指南。
关键字

测试报告 缺陷

正文
测试报告是测试阶段最后的文档产出物,优秀的测试经理应该具备良好的文档编写能力,一份详细的测试报告包含足够的信息,包括产品质量和测试过程的评价,测试报告基于测试中的数据采集以及对最终的测试结果分析。
下面以通用的测试报告模板为例,详细展开对测试报告编写的具体描述。
PART
首页
0.1
页面内容:
密级
通常,测试报告供内部测试完毕后使用,因此密级为中,如果可供用户和更多的人阅读,密级为低,高密级的测试报告适合内部研发项目以及涉及保密行业和技术版权的项目。
XXXX
项目/系统测试报告
报告编号
可供索引的内部编号或者用户要求分布提交时的序列号

部门经理 ______项目经理______
开发经理______测试经理______

XXX公司 XXXX单位 (此处包含用户单位以及研发此系统的公司)
XXXX
XXXX
0.2
格式要求:
标题一般采用大体字(如一号),加粗,宋体,居中排列
副标题采用大体小一号字(如二号)加粗,宋体,居中排列
其他采用四号字,宋体,居中排列
0.3
版本控制:
版本 作者 时间 变更摘要
新建/变更/审核

PART 引言部分

1.1编写目的
本测试报告的具体编写目的,指出预期的读者范围。
实例:本测试报告为XXX项目的测试报告,目的在于总结测试阶段的测试以及分析测试结果,描述系统是否符合需求(或达到XXX功能目标)。预期参考人员包括用户、测试人员、、开发人员、项目管理者、其他质量管理人员和需要阅读本报告的高层经理。
提示:通常,用户对测试结论部分感兴趣,开发人员希望从缺陷结果以及分析得到产品开发质量的信息,项目管理者对测试执行中成本、资源和时间予与重视,而高层经理希望能够阅读到简单的图表并且能够与其他项目进行同向比较。此部分可以具体描述为什么类型的人可参考本报告XXXXXX章节,你的报告读者越多,你的工作越容易被人重视,前提是必须让阅读者感到你的报告是有价值而且值得浪费一点时间去关注的。
1.2
项目背景
对项目目标和目的进行简要说明。必要时包括简史,这部分不需要脑力劳动,直接从需求或者招标文件中拷贝即可。
1.3
系统简介
如果设计说明书有此部分,照抄。注意必要的框架图和网络拓扑图能吸引眼球。
1.4
术语和缩写词
列出设计本系统/项目的专用术语和缩写语约定。对于技术相关的名词和与多义词一定要注明清楚,以便阅读时不会产生歧义。
1.5
参考资料
1
.需求、设计、测试用例、手册以及其他项目文档都是范围内可参考的东东。
2
.测试使用的国家标准、行业指标、公司规范和质量手册等等
PART
测试概要
测试的概要介绍,包括测试的一些声明、测试范围、测试目的等等,主要是测试情况简介。(其他测试经理和质量人员关注部分)
2.1
测试用例设计
简要介绍测试用例的设计方法。例如:等价类划分、边界值、因果图,以及用这类方法(3-4)
提示:如果能够具体对设计进行说明,在其他开发人员、测试经理阅读的时候就容易对你的用例设计有个整体的概念,顺便说一句,在这里写上一些非常规的设计方法也是有利的,至少在没有看到测试结论之前就可以了解到测试经理的设计技术,重点测试部分一定要保证有两种以上不同的用例设计方法。
2.2
测试环境与配置
简要介绍测试环境及其配置。
提示:清单如下,如果系统/项目比较大,则用表格方式列出

数据库服务器配置
CPU

内存:
硬盘:可用空间大小
操作系统:
应用软件:
机器网络名:
局域网地址:
应用服务器配置
…….
客户端配置
…….

对于网络设备和要求也可以使用相应的表格,对于三层架构的,可以根据网络拓扑图列出相关配置。
2.3
测试方法(和工具)
简要介绍测试中采用的方法(和工具)
提示:主要是黑盒测试,测试方法可以写上测试的重点和采用的测试模式,这样可以一目了然的知道是否遗漏了重要的测试点和关键块。工具为可选项,当使用到测试工具和相关工具时,要说明。注意要注明是自产还是厂商,版本号多少,在测试报告发布后要避免大多工具的版权问题。
PART
测试结果及缺陷分析
整个测试报告中这是最激动人心的部分,这部分主要汇总各种数据并进行度量,度量包括对测试过程的度量和能力评估、对软件产品的质量度量和产品评估。对于不需要过程度量或者相对较小的项目,例如用于验收时提交用户的测试报告、小型项目的测试报告,可省略过程方面的度量部分;而采用了CMM/ISO或者其他工程标准过程的,需要提供过程改进建议和参考的测试报告-主要用于公司内部测试改进和缺陷预防机制-则过程度量需要列出。
3.1
测试执行情况与记录
描述测试资源消耗情况,记录实际数据。(测试、项目经理关注部分)
3.1.1
测试组织
可列出简单的测试组架构图,包括:
测试组架构 (如存在分组、用户参与等情况)
测试经理(领导人员)
主要测试人员
参与测试人员
3.1.2
测试时间
列出测试的跨度和工作量,最好区分测试文档和活动的时间。数据可供过程度量使用。
例如 XXX子系统/子功能
实际开始时间-实际结束时间
总工时/总工作日
任务 开始时间 结束时间 总计
合计
对于大系统/项目来说最终要统计资源的总投入,必要时要增加成本一栏,以便管理者清楚的知道究竟花费了多少人力去完成测试。
测试类型 人员成本 工具设备 其他费用

总计
在数据汇总时可以统计个人的平均投入时间和总体时间、整体投入平均时间和总体时间,还可以算出每一个功能点所花费的时/人。
用时人员 编写用例 执行测试 总计

合计
这部分用于过程度量的数据包括文档生产率和测试执行率。
生产率人员 用例/编写时间 用例/执行时间 平均

合计
3.1.3
测试版本
给出测试的版本,如果是最终报告,可能要报告测试次数回归测试多少次。列出表格清单则便于知道那个子系统/子模块的测试频度,对于多次回归的子系统/子模块将引起开发者关注。
3.2
覆盖分析
3.2.1
需求覆盖
需求覆盖率是指经过测试的需求/功能和需求规格说明书中所有需求/功能的比值,通常情况下要达到100%的目标。
需求/功能(或编号) 测试类型 是否通过 备注
[Y][P][N][N/A]
根据测试结果 ,按编号给出每一测试需求的通过与否结论。P表示部分通过,N/A表示不可测试或者用例不适用。实际上,需求跟踪矩阵列出了一一对应的用例情况以避免遗漏,此表作用为传达需求的测试信息以供检查和审核。
需求覆盖率计算 Y/需求总数 ×100
3.2.2
测试覆盖
需求/功能(或编号) 用例个数 执行总数 未执行 /漏测分析和原因

实际上,测试用例已经记载了预期结果数据,测试缺陷上说明了实测结果数据和与预期结果数据的偏差;因此没有必要对每个编号在此包含更详细的说明的缺陷记录与偏差,列表的目的仅在于更好的查看测试结果。
测试覆盖率计算 执行数/用例总数 ×100

3.2缺陷的统计与分析
缺陷统计主要涉及到被测系统的质量,因此,这部分成为开发人员、质量人员重点关注的部分。
3.3.1
缺陷汇总
被测系统 系统测试 回归测试 总计

合计
按严重程度
严重 一般 微小

按缺陷类型
用户界面 一致性 功能 算法 接口 文档 用户界面 其他

按功能分布
功能一 功能二 功能三 功能四 功能五 功能六 功能七

最好给出缺陷的饼状图和柱状图以便直观查看。俗话说一图胜千言,图标能够使阅读者迅速获得信息,尤其是各层面管理人员没有时间去逐项阅读文章。

图例
3.3.2
缺陷分析
本部分对上述缺陷和其他收集数据进行综合分析
缺陷综合分析
缺陷发现效率 缺陷总数/执行测试用时
可到具体人员得出平均指标
用例质量 缺陷总数/测试用例总数 ×100
缺陷密度 缺陷总数/功能点总数
缺陷密度可以得出系统各功能或各需求的缺陷分布情况,开发人员可以在此分析基础上得出那部分功能/需求缺陷最多,从而在今后开发注意避免并注意在实施时予与关注,测试经验表明,测试缺陷越多的部分,其隐藏的缺陷也越多。
测试曲线图
描绘被测系统每工作日/周缺陷数情况,得出缺陷走势和趋向

重要缺陷摘要
缺陷编号 简要描述 分析结果 备注

3.3.3残留缺陷与未解决问题
残留缺陷
编号:BUG
缺陷概要:该缺陷描述的事实
原因分析:如何引起缺陷,缺陷的后果,描述造成软件局限性和其他限制性的原因
预防和改进措施:弥补手段和长期策略
未解决问题
功能/测试类型:
测试结果:与预期结果的偏差
缺陷:具体描述
评价:对这些问题的看法,也就是这些问题如果发出去了会造成什么样的影响
PART
测试结论与建议
报告到了这个部分就是一个总结了,对上述过程、缺陷分析之后该下个结论,此部分为项目经理、部门经理以及高层经理关注,请清晰扼要的下定论。
4.1
测试结论
1
测试执行是否充分(可以增加对安全性、可靠性、可维护性和功能性描述)
2
对测试风险的控制措施和成效
3
测试目标是否完成
4
测试是否通过
5
是否可以进入下一阶段项目目标
4.2
建议
1
.对系统存在问题的说明,描述测试所揭露的软件缺陷和不足,以及可能给软件实施和运行带来的影响
2
.可能存在的潜在缺陷和后续工作
3
.对缺陷修改和产品设计的建议
4
.对过程改进方面的建议

测试报告的内容大同小异,对于一些测试报告而言,可能将第四和第五部分合并,逐项列出测试项、缺陷、分析和建议,这种方法也比较多见,尤其在第三方评测报告中,此份报告模板仅供参考。


参考文献
《实用软件测试方法与应用》 电子工业出版




返回首页 | 关于我们 | 联系我们 | 乘车路线| 地铁路线| 学生住宿| 周边环境| 人才招聘 | 网站地图 | 友情链接 | 版权声明