1.8 测试进行式

坐下来自己专研整个产品不是明智之举。更便捷的是了解每日构建的版本发生了什么变化?比如增删该查了什么代码,是由谁修改的代码,涉及到哪些功能需要我们去验证 等。这些问题可以帮助我们把重点放在发生改变的地方,使工作安排等更有效率。

测试是开发过程里工程师能涉及最远的地方。那么多技术任务如何组织?如何高效的进行自动化测试?如何保持敏捷但又不操之过急?测试是软件工程领域最有意思的部分,而且有非常好的职业发展的机会。你不再只能管软件中的一小块大妈,你能测试HTML5站点的GPU加速能力,你能验证是不是为多核CPU做了足够多的优化以达到最佳的性能,你能确保沙盒是真正安全的。可以为了让测试更加科学化和技术化,去探讨理解相关技术和问题。这些东西都可以让测试热血沸腾,为解决具挑战性的问题而努力。

当接手一个新项目的时候,需要思考:对被测系统来说,什么是最为重要的东西? 对搜索来说是性能,对新闻来说是时效性,对地图来说是综合性和完整性。每个应用都有其最重要的属性。类似的,在对系统基础架构来说,数据完整性对存储最为重要,可扩展性对网络系统最为重要,利用率对任务管理系统最为关键。当了解了待测试的特定产品的关键因素之后,就要把大部分精力集中在检验系统的核心能力是不是恩哥哥满足这些关键属性要求上。
当这些搞定以后,再去关心简单的事情。(用户界面问题是锦上添花的东西)
另外还要关注河西的不容易改动的方面(比如性能设计),而不对容易改动的方面花费太多精力。

来源:Google软件测试之道

1、熟悉对应功能的需求,因为经常有些问题自己也不确认是不是问题。熟悉了需求,了解了为什么需要这个功能,给客户带来的价值是什么。
2、看研发的设计文档,学习里面的业务逻辑,这样发现一个bug后就能过大概判断是怎样产生的,然后也能够更快的复现以及必现这个bug。
3、自己发现的每个问题都尝试去定位,并且对自己的定位过程全部记录下来。定位不下去了再去找对应的开发(已经有了上面的一些排查和重现问题的基础),开发也很乐意(因为节省了开发定位问题的时间)。一边看着开发定位,一边跟开发去请教(虚心的请教大部分开发也是很乐意赐教的 )。然后将开发的定位过程同时记录下来,等开发确认原因后。再跑过去跟开发一起回顾下整个定位过程,看看自己因为缺失什么技能而没有定位出来。
4、缺失的技能就主动去学习,其实无非就是对业务更加熟悉,然后掌握对应开发的一些调试方法。同时也跟着开发一起去看代码(庆幸的是测试能够去看开发的代码,以及跟开发的关系搞好了)。
5、下次碰到类似的问题就将以前总结的一些方法用上;
6、定期的梳理和总结自己的定位问题方法,形成自己的一套完善的定位问题过程,并且增加熟练度。
7.提取一些共性的问题,然后思考如何去避免和及时的发现这样的问题。

来源:知乎 https://www.zhihu.com/question/26644707/answer/54303164

时间: 2024-10-05 23:50:04

1.8 测试进行式的相关文章

14.5-全栈Java笔记:java.awt这些布局怎么写?|流式|边界|网格

布局管理器 读者会发现,如果使用坐标定位法(空布局),在一个比较复杂的界面上定位每个控件的坐标是一个非常麻烦的工作,而且在界面大小发生改变时,控件的绝对位置也不会随之发生改变.那么如果我们想让用户界面上的组件可以按照不同的方式进行排列怎么办?例如:可以依序水平排列,或者按网格方式进行排列等,其实每种排列方案都是指组件的一种"布局",要管理这些布局,就需要本节学习的布局管理器. 管理布局的类由java.awt包来提供,布局管理器是一组实现java.awt.LayoutManager接口的

sql注入攻击与防御第二版读书笔记二——SQL注入测试

寻找SQL注入 该阶段的主要目标是识别服务器响应中的异常并确定是否由SQL注入漏洞产生,随后确定在服务器端运行的SQL查询的类型(select,update,insert或delete),以及将攻击代码注入查询中的位置(比如from,where或者order by等) 我们需要关注:get,post,cookie,host,referer,useragent. 理解并利用SQL注入漏洞所涉及的主要技术包括:在心里重建开发人员在Web应用中编写的代码以及设想远程SQL代码的内容.如果能想象出服务器

转:探索性测试

探索性测试,笔记一 一些有意义的条目: 1.考虑自动化是否能发现有价值的缺陷,是否经得起时间的考验,是否值得付出维护费用 2.决定需要测试什么和何时测试 *对于每一个被发现的缺陷,明确的讨论它应该在什么时候被发现 3.决定如何测试 *是否有一种特殊的路径引导人员找到这个缺陷 *这种功能或特许最好用哪种给定的方法来测试 *知道当前已经进行了哪些测试,以及我们目前和将要进行的测试如何才能增加总体测试效果 *发现软件问题,需要实际用户在实际的环境中,用实际的数据,去做实际的工作 *简单重复的工作实现测

探索式软件测试

探索式软件测试: 在敏捷测试中应用非常广泛 没有固定的测试用例,有一些测试思想和固定的框架以及一些测试场景,来完成测试工作. 即不同的测试思想,不断的应用这些测试思想,本身就是一些策略 自动化测试 手工测试 局部探索性测试 全局探索式测试 混合探索式软件测试 漫游与测试中的棘手问题 手工测试 软件缺陷的根源: 来自软件开发本身! 两种缺陷: 程序员引入缺陷 运行环境导致的缺陷 测试环境和上线环境相差很大 缺陷预防和检测 1.设计更好的设计规范 2.实施代码审核制度 (代码review) 3.运行

对软件开发中uml建模的理解和图形整理(一)

由于uml(统一建模语言)在开发中经常会用到,特别是在软件开发中的OOAD阶段,因此要理解和使用uml显得尤为重要.在uml开始之前,咱先回顾一个OOAD.OOP的主要特征. OOAD:根据面向对象的方法学来对软件系统进行分析和设计的过程.它包括OOA 分析阶段和OOD设计阶段.其中分析阶段主要解决"What to do?"的问题,而设计阶段主要解决"How to do?"的问题.具体来说就是:在OOA分析阶段咱要做的主要工作就是建立对业务问题域的视图(建立模型).

C# 初学

突然对C#充满了兴趣,于是兴致勃勃的折腾起来. 下面是折腾的过程: IDE,我选择了vs2017,不过这货的安装选项略多,对于新手来说各种坑.无论如何,选择".NET桌面开发"即可,其他的全部留空. 然后新建项目,C#项目,控制台项目. 可以开搞了! 总的来说,C#和Java很像 -- 抽象.虚函数.继承.接口等,然而又具有C++的很多特性,如运算符重载! using System; using System.Collections; using System.Collections.

第一周Java基础课程学的知识。

二进制能够被CPU识别的二进制命令就是指令程序(软件)指令的有序集合计算机语言指的是人与计算机沟通的工具机器语言:指的是全部由二进制代码组成的语言.在很早的时候使用的就是机器语言.汇编语言高级语言:特点:第一特点,不用太过关心计算机底层的实现原理.2更加接近自然语言.3.开发者可以更加关注功能实现.Java sun被Oracle收购.创始人 James Grascing Java平台:分三个部分1 JAVASE标准版,必要的功能都包含在里面 2JAVAEE企业版,他的基础仍然是标准版写好的代码去

Android基础之Intent 和 Intent 过滤器

Intent是一个消息传递对象,您可以使用它从其他应用组件请求操作.尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个: 1.启动 Activity: Activity 表示应用中的一个屏幕.通过将 Intent 传递给 startActivity(),您可以启动新的 Activity 实例.Intent 描述了要启动的 Activity,并携带了任何必要的数据.如果您希望在 Activity 完成后收到结果,请调用 startActivityForResult

UiAutomator自动化测试框架介绍

环境搭建 1         必要条件 1.1       JDK 1.2       SDK(API高于15) 1.3       Eclipse 2         简要步骤 2.1       安装JDK并添加bin目录到环境变量 2.2       添加SDK中的tools目录和platform-tools到环境变量 2.3       安装Eclipse并安装ADT插件 建立工程 1         用eclipse建立Java project 2         添加Junit库 3