测试有道:微软测试技术心得
梁博 许珊 徐歆恺编著
78个笔记

引子

我们的测试工程师必须要有更高的技能,并参与到软件开发生命周期中的每一个阶段中来

测试工程师的任务

只是为了找到缺陷或者单纯为了追求找到的缺陷的数目,这种工作未免太简单了。实际上如我们前面所说,测试工作是质量保证工作。

成功职业生涯规划的提示

技术技能。抓住每一个项目的机会去尽可能多地提升技术水平(开发技能、测试技能、自动化技术、调试技术、性能分析技能和架构技能)

沟通技巧。酒香也怕巷子深,当前社会的特点是人多,人才多。如果能及时和有效地把想法、工作进展、期望都介绍给别人,不断加强沟通能力和演讲水平,就能得到比别人更多的关注。

人的技巧。包括团队协作、倾听的技巧、对其他人的敏感度、情商、社交技能等。

领导力。领导一个团队的一个铁律是“爱他们并引领他们”。如何提升领导力,现在市面上相关的书籍太多了,请择优阅读。

培训。请务必阅读书籍和期刊,扩大我们的知识面,参加有关讲座,研讨会,培训班和会议。利用频繁和广泛的内部讨论会和研究的介绍及外部会谈。

要想得到长足的发展,非得用时间来换不可。
气质、品质也不是一朝一夕的,多年的时间才能影响人的性格。
建议永远不要夸大自己的能力,把自己放到一个自己无法胜任的地方去,
做最好的自己,对自己诚实。
· 最重要的是,拍了胸脯之后,从别人那里接受了某项工作或任务之后,一定要保质保量按期完成,不要让自己丧失信誉。

RUP

好的软件过程首先一定是基于组件的,在此基础之上,还要符合迭代开发、用例驱动开发和以架构为中心的这三个最佳实践

。RUP中的软件生命周期在时间上被分解为四个顺序的阶段,分别是:初始阶段(Inception)、细化阶段(Elaboration)、构造阶段(Construction)和交付阶段

敏捷软件开发方法(Agile software development)

。敏捷技术包括测试驱动开发(TDD, Test-Driven Development)和行为驱动开发(BDD, Bahavior-Driven Development

软件开发过程中的测试

如果进行敏捷开发实践的话,开发和测试人员的区别无非是负责编码和负责编写测试代码的区别

从项目开始之初我们就要制定测试计划、对需求进行测试、设计测试和测试用例、执行测试,最后对测试的结果进行总结和分析

不管使用哪种开发模式都要尽可能早地引入测试。

提高软件的可测性(Testability)

如果设计不当,测试可能会是软件开发过程中代价最高的一个环节

微软的软件产品开发过程

每天开发结束后,开发人员都要把自己计算机上最新的源码和文档更新到数据库中,这个过程被称为签入

第3章 软件质量与测试

软件质量同时取决于各种标准,时效性与可测试性(testability),成本与正确度性。

白盒测试(White-box testing)

功能测试技术如边界值分析法、等价类划分法等,在白盒测试中经常使用,甚至无比强

灰盒测试(Grey-box Testing)

黑盒测试会包含:基于用户的测试、基于系统或者需求的测试、可用性测试、行为测试或者捕捉回放自动化。白盒测试包括:基于软件开发工程师的测试、单元测试(代码覆盖率测试)、边界值或安全性测试、结构化测试、审查或代码覆盖率自动化、基于探测器、断言和日志的测试。

边界值法(Boundary value analysis)
边界值分析是通过选择等价类边界的测试用例
当选取正好等于、刚刚大于或刚刚小于边界的值,而不是选取等价类中的典型值或任意值作
月份要求不能超过12,不能小于1,他就会检查13,或者0是不是会导致问题。如果没有,就认为输入不会出错。殊不知,超过最小和最大的物理值的边界值也会导致异常处理,在强类型编程语言中,运行时错误会打断正常的程序执行。如果程序员没有处理超过,

组合分析法(Combinatorial analysis)

我们可以只专注在成对组合(pair-wise),即以两个两个为主来进行组合设计
不同类型中的参数要与其他类型中的参数进行结对测试

第5章 软件测试类型

将整个系统作为测试对象的测试。例如,资源丢失缺陷、吞吐量测试、性能测试、安全测试、恢复测试等。
安装/版本升级测试(Setup/upgrade testing)
安装测试可能包括检查安装界面控件排列、文字、逻辑等,而最基本的是要检查系统文件结构和系统注册的变更。

包括边界值、等价类等方法,尤其是边界值方法。可以寻找在特定磁盘空间容量(有限磁盘空间)、特定网络访问速度、特定权限的情况下的安装问题。

工具:VeriTest-Rational Installation Analyzer

使用这个工具的时候,需要在首次安装前、首次安装后、运行后、首次卸载后、再次安装后、再次卸载后建立快照,用于验证首次安装、运行、首次卸载、再次安装和再次卸载不会产生多余的目录结构和文件,并且文件属性都正确

负载测试(Load testing)

在测试过程中不断递增负载。如果收到了HTTP500(Server Busy)的错误,就说明服务器队列已满,服务器已经开始拒绝请求

监视和分析负载测试结果

Visual Studio提供“负载测试分析器”和“负载测试监视器”,它们均提供如下的负载测试结果的关系图。 图5-11 Visual Studio负载测试分析器中的部分3,就是一个性能计数器(被关注的性能点集合)窗格,用树形结构显示负载测试期间所采集的所有性能计数器。如果复杂测试不是单机执行,而是配置了一个测试群(Test rig,测试机组),包含一个控制器(Controller)和多个测试执行代理(Agent),性能计数器会在控制器和测试执行代理商被收集起来。在图5-12中我们可以从计数器窗格中看到总体、方案名称、计算机、传达阈值冲突信息。

压力测试(Stress testing)

压力测试可以被看做是负载测试的一种,即高负载下的负载测试。使用压力测试来发现内存泄漏问题,以及潜在的影响系统稳定性的问题

压力测试是在强负载(大数据量、大量并发用户等)下的测试

小知识:I18N,G11N,L10N

设计为全世界准备好的软件不只是界面从中文变成英文这么简单,首先,我们的软件要能接受全球各种字符集的输入,还能正确输出全球的各种字符,不会出现乱码和不可识别的

软件要对运行的场所敏感,包括日期时间格式、货币符号、数字格式等都要符合当地的标准;再次,最基本的就是我们的软件界面要显示当地的语言版本,更进一步,如果我们提供多语言界面支持,就需要在用户重新设置界面语言之后能自由在各种语言的界面间切换

我们的程序功能可以具备一定的灵活性,根据当地的特点,可以对功能随意进行一些取舍。

所以我们在设计应用软件的时候,要尽量设计一个源代码只有一套的编码解决方案,要求:语言无关、包含目标语言字符的资源动态链接库与源代码连接、应用程序的核心与资源独立、对于任何一个语言版本的应用来说核心都一致,语言随后加载

安全性测试(Security testing)

避免被利用来对系统进行攻击。在进行安全测试的时候有5个主题要被测试到:机密性(confidentiality):保证信息不被非法获得;完整性(integrity):保证信息不被无意或有意改动;身份认证(authentication);可用性(availability);不可否认性(non-repudiation

不可否认性提供对数据完整性和来源的第三方验证,不可否认性服务可以在发生诉讼时提供重要的法律证据

小知识:微软安全性测试10个小提示

不要使用“系统管理员”权限来运行测试(Don’ t run test with administrator privileges)· 在一个安全的文件系统上进行测试(Test on a secure file system)

不要修改任何在注册表HKLM下的条目和%program files%目录下的文件(Don’ t change anything in HKLM or %program files% directory)

不要使用明文存储或发送机密信息(Don’ t store or send confidential information in clear text)

获得足够的文档(Get adequate documentation)· 使用坏数据来挑战应用极限(Press the limits with bad data)

在有2个或者2个以上处理器的计算机上进行测试(Test on machines with two or more processors)· 了解安全的20个法则(Know the 20 laws of security)· 尽可能利用工具(Use available tools)· 多分析源代码(Analyze the source code)每一个软件研发人员都应该熟悉“10个不可改变的安全法则(The 1

Immutable Laws of Security)”和“10不可改变的安全管理法则(The 10 Immutable Laws of Security Administration)”这两篇经典文章。这两篇文章可以作为经典图书“Writing Secure Code, 2nd Edition”的补充,成为开始设计完美设计的安全软件的开始。

上面我们提高的这两篇经典文章可以从下面的网址找到:The 10 Immutable Laws of Security:http://www.microsoft.com/technet/archive/community/columns/security/essays/10imlaw s.mspxThe 10 Immutable Laws of Security Administration:http://www.microsoft.com/technet/archive/community/columns/security/essays/10salaws .mspx

第6章 测试计划和测试策略

在微软公司,测试计划和产品开发紧密相关,由多个部分组成。所有大型的商业软件都需要完整的测试计划,需要具体到每一个步骤,并且每一个部分都要符合规范要求。测试计划包括内容:(1)概述;(2)测试目标和发布标准;(3)计划将测试的领域;(4)测试方法描述;(5)测试进度表;(6)测试资源;(7)配置范围和测试工具。

风险优先级模型

风险具备两个最基本的特征(1)潜在失败的严重性;(2)失败再现的可能性

手动测试

微软公司在产品的Alpha, beta, self-hosting, dogfood阶段都会使用到手动测试。

测试库和测试框架

测试框架包括的类别有:模块驱动测试(Modularity-driven testing)框架、数据驱动测试(Data-driven testing)框架、关键字驱动测试(Keyword-driven testing)框架、基于模型的测试(Model-base

)框架、混合式测试(Hybird testing)框

数据驱动测试

在数据库中建一个表(跟在单元测试中建一个数组,或者创建一个文本文件/Excel表格文件),在里面输入大量的输入数值和验证数值。由于这些数值会导向应用程序会走向不同的逻辑处理,从而特定的方法会被测试到。

第8章 代码覆盖率

代码覆盖度量只能揭示测试的漏洞,并不能直接改进测试

测试文档概述

验证测试用例:验证代码按照预期执行,得到预期结果

证伪测试用例:验证代码是不是对异常和错误条件进行了适当处

测试用例

一个测试用例包含很多目的:验证程序符合适当的标准(Verify the program adheres to applicable standards)、验证程序满足客户期望并适当处理异常(Validate the program satisfies the customers expectations and handles errors gracefully)、提升代码覆盖率(Increase code coverage)、执行未测试的独立路径(Execute untested independent paths)、暴露错误(Expose errors)。

软件缺陷报告(Bug Report)

缺陷报告包括:(1)简单描述,描述问题/错误;(2)环境,重现的环境配置要求;(3)特定输入,保证多次精确重复;(4)期望结果与实际结果的对比;(5)优先级与严重性;(6)对客户的影响等。

(1)重现步骤描写不完全;(2)使用E-mail这种类型的沟通工具[插图]来回讨论;(3)缺乏深入的分析和调查;(4)扭曲错误,未暴露真正的问题所在;(5)忘记附加相关文件;(6)缺少环境配置信息;(7)与其他已经提交的缺陷报告重复;(8)未明确描述预期结果等

测试工程师负责从发现bug直到bug被处理和解决解决这一过程,在这个过程中,最关键的需要的技能就是“交涉协商”技能,即沟通技能

第11章 软件缺陷管理

修复代码问题:在迁入前可能需要代码复审和集成测试。修复缺陷:将缺陷状态设置为“已经修复”。

优先级和严重性定义

小知识:错误收敛(BugConvergence)

。在错误收敛这一转折点上,解决错误的速度超过了发现错误的速度

小知识:零错误反弹(ZeroBugBounce)

零错误反弹是指在项目中的某一点上,开发活动最终赶上了测试的步伐,当前已经不存在活跃错误

美国的核心价值与商业

反映出民族性格:个人主义、平等、随意、直率、效率和面向未来、尊重法律。

第15章 测试经理的领导力培养

要点在美国,有一种领导者往往具有非常强的个人魅力和远见,能够通过自身的人格去影响他人。因为他们的特殊天赋和激励他人的能力,这种人通常会成为领袖。但往往这种类型的领导是不可替代的,当他们离开时,所在的组织可能会陷入一个混乱的状态。在美国,管理人员往往作为运动的教练而不是父亲的角色。他们通常:· 要求员工完成分派的任务,也期望他们发挥创造性,提供新思路。· 鼓励员工提出问题和挑战他人的意见,包括管理人员的意见。· 与员工保持友好的关系。· 向员工提供咨询和指导,但不会讨论私人问题。尝试淡化或不强调你与他人的差异。许多美国人希望与别人保持一种人人平等的感觉,即使地位差异确实存在。因此,让别人明显地觉得你有更高的地位或认为自己比他人更优秀可能会导致别人认为你势利、粗鲁。

承认成就并表示赞赏

构建团队

确保每位成员都为团队作贡献和配合工作。· 在小组会议上,向不太表达意见的组员提问题· 不要让任何一个人或一小部分人支配整个小组讨论· 确保团队围绕主题讨论而不会跑题。· 创建小组会议议程

信息共享。另一个与美国人进行合作项目的潜在冲突在于信息共享

学会写邮件

为了写出有效的邮件,应该做到:· 尽可能简明扼要,把细节放在附件中。
直截了当,但不要突兀。

把最重要的信息写在开头

撰写有效的主题行

主题行应该是总结要点,并指明你希望收信人采取的行动。例如,“务必回复”或“请检阅”。

有节制地使用“全部回复”,并把你的收信人的邮件地址放在正确的地方。使用发送:给直接受这封邮件影响的人。使用抄送:给那些间接受这封邮件影响或要求了解相关问题的人。

202203读书-《 测试有道:微软测试技术心得》相关推荐

  1. 微软虚拟化技术——构建高效开发与测试环境

    开发与测试–制衡 在中国的文化中,制衡之道往往是诸多治国明君都必须掌握的策略,不论是太平盛世也好,车马乱世也罢,如果希望能够延续自己统治,管理好一个国家,一 座城池乃至一个村镇,都离不开制衡:其原因在 ...

  2. 【测试人生】《测试架构师修炼之道》阅读笔记

    <测试架构师修炼之道>一书,笔者入行一年多的时候拜读过.虽然这本书主要偏向业务测试.质量管理的方向,而并非技术测试.测试开发的方向,但只要是测试行业从业者,笔者认为都值得一看. 从笔者本人 ...

  3. 测试开发到底是做什么的?测试开发需要掌握哪些技术

    关于"测试开发是什么?为什么现在那么多公司都要招聘测试开发?"我们直接就从这两个问题去回答并分析其原因: 测试开发是什么? 为什么现在那么多公司都要招聘测试开发? PS:这里有一套 ...

  4. [亿能测试_www.gdtesting.com]测试技术资料网盘共享

    [亿能测试_www.gdtesting.com]测试技术资料网盘共享: http://pan.baidu.com/share/home?uk=974090852 转载于:https://www.cnb ...

  5. 窗体测试只能用于本地测试_爆料:微软 Win10X 将首先用于测试单屏笔记本

    本文转自:IT之家 作者:玄隐 去年,微软宣布了新的桌面操作系统"Windows 10X".Windows 10X是专为Surface Neo等双屏或折叠屏设备而设计的,但正如我们 ...

  6. 聚焦技术前沿 | 字节跳动年薪百万测试开发关注的前沿技术

    网络流传IT从业人员年薪普遍比较高,最近网络有一篇文章[国家何时整治程序员高薪现象引起热议.吃瓜群众只看到表面的薪资高,却不知道程序员需要掌握什么样的技术,加多少班,头发掉多少.当然有些小伙伴会说,看 ...

  7. 06- 移动端APP兼容性测试以及APP兼容性测试手机选择与云测试技术

    在开始测试APP之前,应该考虑什么问题?或者如何选择设备?多少部手机测试兼容性最佳? 兼容性测试手机数量:主测手机 1 ,2(根据人员),辅助测试手机:用于兼容性测试.(50-60台最佳,至少5-20 ...

  8. 微软测试基于云的剪贴板App,可跨平台同步

    微软测试基于云的剪贴板App,可跨平台同步 这一周真的是未公布的微软App的一周啊.几天前,一个轻量级邮件解决方案的新闻爆出,并且今天另外两个生产率管理app被提出来.感谢@h0x0d的推特--流邮件 ...

  9. 月薪15k的测试员需要学习什么技术?

    想了很久,决定还是要写一篇这样的文章出来,月薪15k的测试员需要学习什么技术?我觉得测试想要月薪15k并不难,只要做到我说的这几点肯定是可以的! 克服懒惰 我觉得,越是聪明的人越是觉得自己" ...

最新文章

  1. Spring Cloud Gateway之Predict篇
  2. 高并发Nginx,Tomcat8,mysql数据库配置
  3. ubuntu16.04上安装gstreamer
  4. mysql中以下正确的sql是_总结MySQL中SQL语法的使用
  5. Sql养成一个好习惯是一笔财富
  6. Thinkphp中Auth认证
  7. 运维利器:万能的 strace
  8. js判断输入数字是否是整数,金额、数字
  9. CentOS7安装PHP5.6.23
  10. 【今日CV 计算机视觉论文速览】Mon, 25 Mar 2019
  11. php--- 转换编码
  12. Portainer复制Docker容器
  13. MediaInfo源代码分析 2:API函数
  14. pycharm汉化(搜索不到插件的参考第二中方法)
  15. CentOS 7 搭建邮件服务器搭建(postfix+dovecot)
  16. 数据库复习-3.常用的概念模型
  17. mmpi明尼苏达多项人格测验量表解读
  18. 微信小程序中如何打开公众号文章(node版)
  19. 电脑公司GHOST WIN7 SP1 2011装机旗舰版
  20. idea 资源文件各种花色的意义。是做啥子的

热门文章

  1. nginx重启报错:nginx: [error] open() “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directo
  2. word 插入图片显示不全
  3. Python电影爬虫,用Excel存储并进行数据可视化分析
  4. 从VIVO到华为,让人目瞪口呆的“未来SMT智能工厂”亮相
  5. 自然语言-知识图谱调研结论
  6. STM32外部中断干扰解决方案
  7. HTML5+JavaScript调用摄像头拍照或者摄像
  8. calendar -- 日历相关│Python标准库
  9. 逃离僵尸岛【最短路】
  10. Python制作爱心跳动代码,这就是程序员的烂漫吗