1、软件测试经验与教训分享 “软件测试 经验与 教训”读书总结 目录 第 1章:测试员的角色 第 2章:测试员的思考方式 第 3章:测试的手段 第 4章:程序错误分析 第 5章:测试自动化 第 6章:测试文档 第 7章:与程序员交互 第 8章:管理测试项目 第 9章:管理测试小组 第 10章:计划测试策略 1-测试员的角色 测试员的角色是什么? 测试员在项目中承担什么作用? 测试员的工作职责是什么? 测试员与开发之间的关系? 1-测试员的角色 项目的前灯、探路者:决定关键信息决策; 服务很多客户:项目经理、程序员、客户、产品经理等; 工作使命:以客户为中心,明确需求,提高效率降低风险; 告知客户威胁信息:告知客户有关威胁产品的任何信息; 迅速找出重要程序问题 :需要对问题分级分类考虑; 跟着程序员走 :为程序员提供支持,及时反馈,快速测试; 询问问题:经常含蓄提问问题,有助于启发自己思考; 关注失效 :用全部创造力和技能关注失效,产品才会成功; 不会发现所有问题:找出并报告重要程序问题; 当心完备测试:没有完备的测试,只有尽全力的测试; 测试不能保证质量 :测试和错误报告提供质量保证信息;
2、 永远别做看门人:不要对产品的发布具有否决权; 当心不关我事理论:尽其所能,沟通所有消极影响问题; 当心成为过程改进小组:可以参与,但注意方式; 别指望别人理解测试或怎么能更好测试 :靠自己; 2-测试员的思考方式 消极的思维者?报告坏消息时极度兴奋; 证据的提供者?打破产品没有问题的幻觉; 实践的认识论?仔细推敲的推理机器; 严谨的开拓者?寻找任何可能的缺陷; 2-测试员的思考方式 测试运用的是认识论 :如何认识所了解的东西; 研究认识论有助于更好测试 :我们应该怎么思考; 认知心理学是测试的基础 :我们是怎么思考的; 测试在测试员的头脑中:测试水平不同在于如何思考; 测试需要推断,并不只是做输出与预期结果的比较 :大多数测试都是基于推断,掌握探索式推断的艺术; 优秀测试员会进行技术性、创造性、批判性和实用性的思考 :相信事物不像外表看的那样,不要视野狭窄; 黑盒测试并不是基于无知的测试 :测试员与程序员的思考方式不同,预测遗漏风险,越懂产品,测试得越好; 测试员不只是游客:评估产品,不只是见证产品; 所有测试都试图回答某些问题:现实产品与应得产品关系; 2-测试员的思考方式 所有测
3、试都基于模型 :模型清晰完整,利于测试; 直觉是不错的开始,但又是糟糕的结束:直觉可以作为指南,但不能用作合理性证明; 为了测试,必须探索 :探索式思考,最大化测试价值; 探索要求大量思索:侦察,前向、后向和侧向思索; 使用诱导推断逻辑发现推测:最佳解释的推理; 使用猜想与反驳逻辑评估产品:证明猜想是假; 需求是需要人物所关心的质量或条件:产品应该满足的任何质量或条件都是需求; 通过会议、推导和参考发现需求:多种途径获取需求; 既要使用显示的规格说明,也要使用隐式的规格说明; “它没有问题”真正含义是它看起来在一定程度上满足部分需求; 2-测试员的思考方式 最后,测试员所能得到的只是对产品的印象; 不要将试验与测试混淆起来; 当测试复杂产品时,陷入与退出 :间歇进行,多轮次的陷入与退出,明白产品模式轮廓,执行测试和研究策略; 运用试探法快速产生测试思路:为测试员思考提供建议; 测试员不能避免偏向,但是可以管理偏向:集体讨论问题; 如果自己知道自己不聪明,就更难被愚弄 :任何时候都要注意其他测试员所发现的自己本来可以但没有发现的问题; 如果遗漏一个问题,检查这种遗漏是意外还是策略的必然结
4、果 :如果遗漏是因为测试策略关注了错的问题,则改进; 困惑是一种测试工具:困惑成为指南针,指出重要问题; 清新的眼光会发现失效:善于察觉和发现问题; 2-测试员的思考方式 测试员要避免遵循过程,除非过程先跟随自己:必须掌握自己的测试,让过程跟随自己; 在创建测试时,避免“ 1278”:避免与测试无关的细化; 测试过程是一个重要成果,是更好、更聪明的测试员 :无止境学习,加深产品理解,提高反应能力和敏感性; 除非重新发明测试,否则不能精通测试; 前两章主要用来讲述观察和学习怎么成为一个好的测试员, 怎么去思考问题,难免抽象,下一部分会详细介绍测试的细 节,针对实际中的问题进行探讨和交流 3-测试手段 关注测试员、覆盖率、潜在问题、活动和评估的组合测试手段 五要素测试系统:测试员(进行测试的人),覆盖率(测试那些内容),潜在问题(测试原因、风险等),活动(如何测试),评估(怎么判定过还是不过);所有测试都包括所有这五个要素,谁测试?测什么?怎么测?测试问题?怎么判定? 关注测试员的基于人员的测试手段 用户测试,由将使用该产品的典型人员进行输入的测试; 测试,测试小组执行的内部测试; 测试,
5、产品目标市场成员的测试员实施的用户测试,将客户试用代码看做是 测试;强力测试,利用秘书、程序员、市场开发人员和任何人所实施的测试;有关领域的专家测试;成对测试,两个测试员在一起发现程序错误;自用测试,全公司使用试用版软件; 3-测试手段 关注测试内容的基于覆盖率的测试手段 1、黑盒:功能测试,逐个测试每个功能;菜单浏览,遍历 GUI产品的所有菜单和对话框,使用每个可用的选项 ;域测试,包含所有可能的函数变量取值 ;等价类分析;边界测试;最佳代表测试;输入字段测试大纲或矩阵,开发一组相当标准的测试用例;用各种方式映射和测试编辑字段; 2、白盒:逻辑测试,变量在程序中的关系,参照因果图;基于状态的测试,程序的状态要发生转换;路径测试;语句与分支覆盖率; 3、其它:配置覆盖率,配置计划占计划运行的配置测试总数的百分比;基于规格说明的测试,常常包括手册、市场开发文档或广告等;基于需求的测试,满足需求文档中的所有需求;组合测试,相互组合测试两个或更多变量; 3-测试手段 关注测试原因(针对风险)的基于问题的测试手段 基于风险的测试至少有两个主要含义:进行风险分析是为了确定下一步要做的测试;为了显
6、现错误进行风险分析; 1、输入约束:限制程序可以处理的内容的约束; 2、输出约束:输入合法,导致产生程序所不能处理的输出值; 3、计算约束:输入、输出都合法,计算某个值时,程序失效; 4、存储约束:输入、输出、计算都是合法的,但是操作使内存耗尽、产生数据文件太大、程序不能处理等; 关注测试方法的基于活动的测试手段 1、 回归测试 :软件变更后重新执行;共有三种回归测试,分 别为程序错误更正回归(程序更正有误);老程序错误回 归(老程序错误更正变为未更正);副作用回归测试(未 曾发生的问题发生了); 2、 脚本测试 :手工测试; 3-测试手段 3、冒烟测试 :自动化、标准的,检查预期没有问题的东西; 4、探索式测试 :整个测试过程中,都要了解产品、市场、风险和怎样没有通过以前的测试,不断创建并使用新测试,新测试是建立在测试员持续增长的知识基础上的。 5、游击式测试 :快速、有力的攻击,一种探索式测试,通常有时间限制。 6、场景测试 :四个属性,分别如下:测试必须是现实的,反映实际做的事;复合的测试,有一定挑战的包含多个功能;容易并且快速的显示是否通过测试;未通过测试,强烈要求修改程序。
7、7、导出测试 :用例导出的测试,叫用例流试验或者测试试验;关注重要用例的覆盖率; 8、安装测试 :各种方式,在可以安装该软件的不同类型系统上安装; 9、负载测试 :通过在面临很多资源要求的系统上运行,攻击被测程序或系统,高负荷情况下,可能失效; 10、长序列测试 :一天,几天,几周,目标是发现短序列测试遗漏的问题;经常发现的错误包括越界指针,内存泄漏、栈溢出、超过两个特性之间的错误交互等;通常所说的稳定性测试; 11、性能测试 :确定程序运行会多块,以便确定要优化,可以暴露很多其它程序错误;更快更慢两种情况都要警惕; 3-测试手段 关注测试是否通过基于评估的测试手段 评估手段描述确定程序是否通过测试的方法,如果采集到数据如何评估; 1、 自校验数据 :使用的数据文件带有使测试员能够确定输出数据是否被破坏的信息; 2、 与已保存的结果进行比较 :回归测试是否通过,将当前的结果与之前的结果进行对比,如果以前的结果是正确的,现在的有所不同,这种差别可能就是新缺陷的表现。 3、 与规格说明或其它权威文档比较 :不符合规格说明的都可能是错误;启发式一致性:一致性是评估程序的重要评判准则。七种主要
8、的一致性,如下:与历史一致;与我们的想象一致;与可比较的产品一致;与所声明的内容一致;与用户的预期一致;产品内部一致;与用途一致; 4、 基于理念的测试 :理念是一种评估工具,理念一般比被测软件更可信赖,值得花时间和精力检查理念所给出的提示。 3-测试手段 根据自己的看法对测试手段分类 不管怎么样对测试手段分类,在实际进行测试时,仍然需要在五个要素方面进行决策。 测试手段附录: 1、针对输入字段创建测试矩阵 : 简单字段例程的,如不输入、清空字段、超出上限位数或字符数的数字或字符、 0、有效值、下限值 -1、下限值、上限值、上限值 +1、远远低于下限值、远远高于上限值、下限位数或字符数的数字或字符、下限位数或字符数的数字或字符 -1、上限位数或字符数的数字或字符、上限位数或字符数的数字或字符 +1;远远高于上限位数或字符数的数字或字符、负数、非数字、错误的数据类型、表达式、在其它数据前加一个空格、在其它数据前加很多空格、在其它数据前加一个 0、在其它数据前加很多 0、在其它数据前加一个 +号、在其它数据前加很多 +号、非打印字符(如 Ctrl+C)、操作系统文件名保留字符(如 *.;)
9、、程序设计语言保留的字符、 ASCII上半区字符、 ASCII255、大写字符、小写字符、修饰键(如 Ctrl、Alt)、功能键(如 F2、 F3)、不输入 -等待 -回车 /制表键、输入一个数字 -等待 -回车、输入多个数字并使用删除键编辑 -再删除 -插入 /覆盖、 3-测试手段 响应不同类型的中断时(如打印机活动、鼠标移动、文件存盘等)输入数字、输入一个数字 -切换到另一个应用 -再返回应用; 2、 如何针对重复问题创建测试矩阵: 字段只是有用矩阵中的一个例子,只要某种情况在项目内部和项目之间反复出现,都要花时间和精力制定一个测试大纲的基础。例子中,大纲尝试把文件写入磁盘的各种失败方式:保存新文件、覆盖同名文件、在结尾处续接文件、用同名文件的新版本取代正在编辑的文件;转换到另一种文件格式;打印内容存盘、消息或错误日志存盘、保存临时文件等;为了创建类似大纲,建议至少要召开两次有同时参加的集体讨论; 3、 如何为基于规格说明的测试创建可跟踪性矩阵: 正向跟踪每个测试用例到规格说明中的一项,并反向跟踪每个规格说明项到测试该规格说明项的测试用例;有助于了解: 1、几乎永远不会测到的功能,而另外的功能则经常测到; 2、针对某个规格说明的变更,会导致系统中的测试用例重新考虑;当然,矩阵有各种各样的问题,不能表现出那个用例是测试重点,未在规格说明中的用例则无法体现等等; 4、 如何使用全对偶测试手段进行组合测试: 与正交试验法编写用例法类似; 3-测试手段 5、如何分析
《软件测试经验与教训分享》由会员90****2分享,可在线阅读,更多相关《软件测试经验与教训分享》请在金锄头文库上搜索。