敏捷测试者的担当

Agile Testing Days 2015上,Marnix van den Ent做了一个报告,在报告中他解释了测试员如何标志并且质疑(测试)过程。他将测试员们看成一个丑角这个观点:“一个团队和团队进度的仆人,就像意大利的丑角一样,测试员在那里帮助大家理解发生了什么”。

\\

InfoQ采访了Van den Ent:测试如何被看作提出问题、测试员能做什么来发展询问的艺术、以及一个敏捷测试员如何标志并质疑过程与实践、测试员可以适应并使用的XP实践和测试员如何在追溯会议中作贡献。

\\

InfoQ:你提到测试员用测试对产品提出质疑;他们天生富有问问题的能力。你可以给一些测试可以被看作问问题的例子吗?

\\
\

Van den Ent:在测试象限中,Brian Marick将支持团队的测试与批判产品的测试区分开来。个人可以看出问封闭和开放问题的不同。

\\

并且,探索性测试是一个极好的例子,在这种测试中我们通过对被测系统提出开放性问题。在有些测试中我们不知道系统的回应——但是我们可以确定真实的回应是不是全部正确。系统行为是什么?一个测试可以让这个问题变得有形,例如一个具体的场景:当一个用户用合法的用户名和不合法的密码登录了三或四次系统,但是在这三到四次登录中间关掉会话很长一段时间,系统会做出什么反应?

\
\\

InfoQ:测试员可以做些什么来发展提问题的艺术,并帮助敏捷开发团队交付更好的产品?

\\
\

Van den Ent:这种帮助可能会发生在两个层面上。第一,当看待“我们如何测试产品”时,我们有几个方法来实现。帮助我们弄清楚测试是关于什么的方法是学习(老派的)结构化测试,其中测试活动和测试职责是针对单独的功能、单独的阶段和单独的任务等。这种拆开的方法帮助我们弄清楚在测试中我们要处理什么。并且它以某种方式声明了我们可以或应该怎样做测试。在语境驱动的测试学校,人们比其他测试学科的学校更多地研究怎么测试。这就是“质疑产品的艺术”被培养出来的地方。

\\

接下来,当我们着眼于其他层面来帮助团队交付软件:我们怎么样能帮助或改善他们工作的方式?这也许是Scrum管理者与敏捷开发指导擅长的领域。既然这样说,很容易推断出这种假定:责任都降临在了这些角色中而不是其他的人中。当我们做之前提到的测试时,你就会面临那些团队在开发过程中做决定的后果。所以,作为一个测试员就可以看出这些决定的弊端。那时,一个人学会看这些决定并对自己和他帮助改善开发过程的团队提问题。这种问题应该针对一个相对广阔的范围,因此很难阻止它进入一个固定的模式。你甚至不能说封闭性问题不好,因为在某些情况下你也许需要驱使它。

\
\\

InfoQ:你可以详细阐述一下敏捷测试员如何标志并对团队和团队周围的组织中用到的过程和实践提出问题吗?

\\
\

Van den Ent:就像我之前说到的,当做测试的时候,个人可以观察局势。例如,如果最重要的用户故事(应该最早被开发的用户故事)的最后一轮测试只可以在第二个冲刺的一半做,你将有预感过程不会像那样乐观。假定用户故事不会像可以问做了什么决定一样大;例如,团队有没有在同时做几个故事上达成统一意见;为什么?

\\

一个不同的情况是一个(外部操作的)产品负责人相信他和团队成员的电话交流足够好,所以他只在一个冲刺中与团队见一次面。在这种情况下,结果表明,产品负责人与管理人员的意见一致阻止了这种情况——然后,也许强烈的个人说服力终究会帮助我们改变这样的情况。

\
\\

InfoQ:你有一些测试员可以在敏捷开发中适应并使用的XP实践例子吗?

\\
\

Van den Ent:我个人发现了极限编程是一个很好的资源,测试员可以从中学到“新的”对他们团队有用的实践。在极限编程中,一个实践就是共享代码所有权。测试也是这样。有很多这样的团队,其中测试员都有自己的技巧并且他们完全信任自己这样做。这不是很好。团队中的测试员应该意识到共享想法、“设计”测试用例的方法以及帮助提高测试质量和效率的测试。配对和广泛的审查是一个可以令他们做到这点的方法。

\\

XP还有“简单”这个价值。在很多的情况中,测试员很简单就能前进。但是也有很多情况中,被测试的行为取决于很多参数、值和它们的组合!使这样的测试保持简单才是与团队成员和关键用户交流你的测试的关键。

\
\\

InfoQ:你可以解释一下,在你看来,是什么使追溯会议在敏捷开发中如此重要?测试员怎么对追溯会议做贡献?

\\
\

Van den Ent:首先,我要感谢你问出这个问题!学习是敏捷开发的工作方式中一个关键的方面。没有学习就没有敏捷。追溯会议是反映并提升团队工作的标准方式。你经常会听到说追溯会议就像强制性的仪式一样无聊。但是那样的话,你就没有在学习。保持开放性的思维和持续提出问题,以便提升团队的过程,这样能帮助整个团队学习。测试员天生富有问问题的能力。测试员应该学习不仅仅只对产品提出问题,也应该向团队和过程“提出”问题。

\
\\

查看英文原文:Agile Testers can be a Harlequin

\\

感谢张龙对本文的审校。

\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群06e1fec4a87eca3142d54d09844c629f.png(已满),InfoQ读者交流群(#2)06e1fec4a87eca3142d54d09844c629f.png)。

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值