如何鼓励客户进行内部质量检查?


14

更新/说明我的客户了解他们进行内部测试的必要性,并且他/他们总是发誓他们会“做得更好”(即做某事),但那没有发生。他们没有外部测试的预算。我想我正在(模糊地,我​​承认)问什么可以灌输“尽早测试,经常测试,对目标机器的精神进行测试?

问题:如何鼓励用户花时间明确测试和报告新版本的问题,而不是在生产项目中“按需测试”。

背景:我有一个小客户,为此我编写了一套多媒体演示工具。他们是一个很好的客户,我们有着良好的关系。该项目正在进行中,并随着我们的进行添加了功能。

我有两个问题:

  1. 功能定义通常是通过电话即时进行的,可能会进行更改,修订和撤销。(有点像肯尼迪的“我们将登月并做其他事情” –我一直对其中的“其他事情”感到很开心)

  2. 实际上,最终没有进行质量检查测试。

我可以或多或少地处理#1。这个客户甚至不会在会议前阅读规范,更不用说撰写规范了。我习惯了。这是我遇到的问题的项目2:他们不测试或不会测试新版本。他们所做的是将其用于生产,因此,当出现错误时,他们要么找到解决方法而不报告,要么急着着手进行该项目,从而使错误报告模糊不清。

关于这一切,我们进行了很多讨论,但是我只能稍微推翻一下(例如,我们使用github进行问题跟踪-尽管我大多使用它)。根本原因有两个:它们是一家小型咨询公司,没有(或认为没有)测试资源(也没有预算将其外包)。和文化的:尽管他们认为自己是“开发人员”,但实际上他们只是多媒体软件包的用户。(例如,他们对“真实”开发人员的细节没有强迫症)。

如您所料,这会影响到我:没有反馈,我无法告诉您功能是否完整(请参阅#1),或者是否还有其他后果。这也让我有点懒。



3
如果错误很小,用户本身似乎并不关心它是否已修复,那么为什么要坚持呢?
卡米尔克,2015年

2
@kamilk-简短的答案是我投资于我的客户,做得很好,富有成效等。长长的答案是,这通常不只是一个“小”错误的问题,它还可能是可用性问题,缺少功能实现等。如果不知道,将无法修复。而且,他们提出的“解决方法”通常会浪费大量时间,甚至会停留在该软件的早期版本上。
2015年

18
如果您对客户的投资做得不错;您应该先进行非常扎实的测试,然后再发布给他们。客户不是测试人员。雇用测试人员,或者自己做测试,或者编写编码测试,但是如果您想绝对确定自己的产品适合客户,请在提供给客户之前进行测试。
Jimmy Hoffa

4
@djechlin-它完全是关于测试(和报告)的。而开发人员只能进行如此多的测试:我不会像用户那样使用它。
2015年

Answers:


18

他们没有强迫症,只关注“真实”开发人员的细节

前言:您在这里使用的语言通常对我来说是一个危险信号。当我听到人们谈论“真正的”开发人员或(唯一的)“正确”的做事方式时,我开始思考那些有远见的货运狂热开发人员

现在,我并不是说您肯定是这些开发人员之一(我没有足够的证据来断言),但是如果您是,那么您可能会从此答案中受益。

回答

听起来您和您的客户正在针对不同的事物进行优化。在软件工程中,不幸的事实是,业务需求和开发人员的需求常常不一定一致。

软件开发人员通常是热衷于即兴创作的人。他们喜欢提高软件性能,开发流程,业务流程,通信方法等。这很棒。专注于这些东西是将工匠和手工艺者与盲目的推键分开的地方。

但是,您的客户不是软件工艺师。您的客户的业务重点完全不同。有时,这些优先级对我们软件技术人员来说似乎很荒谬……但这仅仅是因为我们正在针对不同的事物进行优化。

企业经常希望针对诸如早日投放市场和节省短期成本之类的问题进行优化。为此,他们可能需要牺牲质量检查,用户体验,节省长期成本以及其他使开发人员付诸东流的事情。

那是一件坏事?好吧,不一定。我不能代表所有企业,但以我的经验,我的客户会做这些事情,以增加自己的ROI(投资回报率)。诸如质量检查,用户体验优化和长期计划之类的事情会使他们的投资回报率降低。更糟糕的是,许多企业的投资结构只奖励短期赢利,而不是可持续方法和长期赢利。

因此,尽管您可以尝试将质量检查的想法卖给客户,但可能会浪费您的时间并拉紧与他们之间的关系。在最好的情况下,您会让人急切地尝试您的想法(不太可能)。在最坏的情况下,您必须说服整个公司重新制定激励机制,以使诸如QA之类的长期投资得到回报。无论哪种情况,成功的机率都很低。


4
+1试图更改整个不同业务的内部运作方式,因为这似乎不适合您,通常会缩短一段关系。专业人员应该建议他是否可以预见到严重的问题,特别是如果他们还可以建议如何减轻这些问题时。但是,如果问题如此之小,公司甚至都不愿意报告这些问题,那么您最好的办法就是不时地发送友好的提醒,说如果X或Y不坚持就可以节省时间。
2015年

为-1,虽然这是一个良好的书面文章,这并不能真正解决的问题是如何,你会去这样做。答案是,您可以说服常规开发人员以非常相似的方式进行测试:表明测试有助于降低风险。更少的风险==减少了客户演示过程中的生产问题。
大卫说,请恢复莫妮卡(Monica)2015年

否-偏离基准,但感谢您的回复。
2015年

@DavidGrinberg很好,除非减少生产问题的数量不值得客户付出多少精力/成本/时间。如果是这种情况,那么没有任何开发人员逻辑会说服他们牺牲自己的ROI来满足您的需求。这就是为什么我没有回答如何的问题,而是集中在它的前提下潜在的缺陷。
MetaFight 2015年

手工艺人:-)
Toni Leigh

10

有趣的问题是,何时获得报酬,而不是客户是否对自己进行任何测试。

  • 如果您根据自己的时间获得报酬,那没问题。
  • 如果您提前获得付款,没问题。
  • 如果您在客户宣布该项目“完成”时获得报酬,那就是大问题。

问题是您如何知道客户何时接受该软件并向您付款。当客户用含糊不清的新要求不断修改项目时,这显然不起作用。如果这意味着发薪日总是被推迟,并且每次请求都变得不太可能,那么这对您来说就站不住脚了。

固定合同仔细地指定了所有功能,并定义了客户在何种条件下接受这些功能,这显然非常不舒服,但是它允许您提前计划项目(以及下一个项目)。它还保证,如果符合规格,您将可以从自己提供的软件中获得收益。在这种情况下,客户的唯一责任是在合同定义阶段,最后是验收测试

客户进行的这种验收测试与其他形式的测试是分开的:

  • 单元测试
  • 系统集成测试
  • 可用性测试
  • 负载测试
  • 发行前测试

在交付功能之前,您将尽可能预期接受测试并亲自进行测试,以免造成尴尬。除了验收测试(仅衡量合同履行情况,而不衡量软件质量)之外,所有质量保证是您的责任。特别是,您的客户不一定具有质量检查心态,必要的技术背景或进行质量检查的合同义务。另外,我发现将漏洞寻找外包给客户非常不专业。

这并不是说不会发生错误。假设您与客户之间存在基于项目的关系,那么您将需要在礼貌和迅速提供修复程序之间走一跳,并说明他们已经接受了足以满足其需求的当前版本-较大的更改需要签订新的合同。如果您有一份持续的支持合同,那么您当然必须遵守约定的服务水平。

在敏捷的环境中,响应客户的需求比遵守合同更为重要,但是您仍然希望获得报酬。因此,许多面向敏捷的项目方法都重视与客户的密切互动,以至于客户可能成为团队的一部分。然后,您可以随时与该“产品负责人”交谈,以阐明任何必要的观点。由于PO有权授予您时间来使用他们认为有价值的任何功能,因此即使从模糊的客户需求入手也可以使用。如果没有这种密切的沟通,则需要遵循更正式的方法。

  • 当您了解新的客户需求时,请与客户一起将其转换为需求。这可以帮助客户获得他们真正想要的东西。
  • 需求是可以客观衡量的–它们是否满足。这样可以使客户免于只能做那种工作的半解决方案。
  • 必须以书面形式提供所有客户请求,以便您可以向他们收费。这样可以避免向您收取您刚刚想做的事情的费用-例如在要求按钮以不同方式对齐时重写整个界面。

    可以亲自或通过电话进行很多沟通,但是最后您需要一张纸记录客户希望您满足这些要求的文件。在简单的情况下,重述电话并向他们发送电子邮件以验证他们要求您执行的操作可能就足够了。

错误报告总是很困难。如果您的客户本身就是开发人员,那么他们应该会有所帮助,因为他们可以了解您的需求:制定清晰的复制步骤。一种获得强大洞察力的简单方法是启用已部署软件的登录。只要可以解决数据隐私问题,就要求每个错误报告都附加当前日志,这不仅可以保证一定的书面沟通,还可以告诉您用户实际做了什么(与他们认为要做的相反) 。


1
钱不是问题(我需要每月聘用–无论我是否编码,我都会得到报酬)。这是如何推销他们的办公文化……或我没有得到的东西。
2015年

2

鼓励错误沟通的方法是鼓励频繁,细致地传达功能。如果你培养一个公司,他们可以要求任何与零式上,他们将使用小错误这个功能了。除非对客户的工作流程进行更改,否则请不要进行更改。

让您的客户进行内部测试很困难,但是让他们实际报告错误并不像听起来那样困难。获得更多反馈的方法是减少用户的摩擦……即使这意味着将一些摩擦转移给自己。

  1. 使用更简单的工具,即使这些工具不足或不合适。例如,BaseCamp是一个非常糟糕的错误跟踪器(因为它旨在用于项目管理),但是人们实际上愿意使用它。

  2. 由于我们使用的错误跟踪器不支​​持图像复制粘贴,因此我实际上编写了一个简单的程序,该程序将当前剪贴板图像复制到磁盘(作为Guid),然后将Guid复制到剪贴板。经过最少的培训,用户只需单击打印屏幕,单击按钮,然后粘贴到Bug提交工具的文件选择器对话框中,即可将剪贴板图像附加到问题上。

屏幕截图(可能在MS Paint中使用注释进行了编辑)和1-2个句子足以确定大多数功能/错误。

这两个建议都针对遇到的摩擦点,并且这些建议都使报告增加了10倍以上。但是,您将需要针对自己的摩擦点。


这个答案很明确。您希望他们实施严格的测试协议:这不太可能发生,尤其是如果它来自组织外部(例如您)。在这种情况下,最好的办法是使您无论如何都能获得报酬,从而尽可能地轻松地将错误报告给您。如果您真的对彻底的测试束手无策,请自己进行操作,并在需要时进一步了解业务流程。这是一个不幸的现实,许多公司永远不会优先考虑测试。
DrewJordan

1

使您的客户的测试变得容易,但使客户很难在生产中未经测试的版本中使用任何新功能。这可以通过以下方式完成:

每当您提供新功能时,都首先以“测试版”实现此功能,并明确标有“不用于生产”的符号。您可以将此Beta版本提供给客户端进行测试。您还提供了他将用于实际生产的最新“生产版本”(没有新功能,但已修复了最新的错误),并且您拒绝将新的Beta功能转移到生产版本中,直到获得以下人员的反馈:客户端至少首先尝试过。

如果客户开始在其实际生产数据上使用beta版本,尽管该代码始终在启动程序时始终显示一条大消息“不用于生产”,则您无济于事,但至少您已经清楚地表明,无论何时他放弃生产之所以工作,是因为他将测试版用于错误目的显然是他的错。如果客户端没有从中汲取教训,则可以考虑通过禁用一些关键功能(例如,将结果保存到“ beta”中的磁盘)来禁用客户端在生产中使用“ beta”的功能。

提供单独的“ beta”将迫使您建立适当的版本控制/配置管理,因此您可以轻松地并排管理生产分支和beta测试分支。但是由于您正在使用Github,所以我想您已经使用了类似GIT的工具,这使得这种管理非常简单。


我真的不同意第一段。人们经常真正地意识到某件事很重要却没有做到(例如戒烟)。测试是类似这样的经典示例:即使您意识到它确实很重要,它也需要大量的纪律,以便在面对截止日期等时不要采取捷径。但是,鉴于客户表示希望更好地进行测试的愿望。

我还将以此为契机解决第一个问题。向客户提出整个流程,在该流程中,写下新要求,达成协议,在非生产环境中进行测试然后发布。

我确实将新发行版标记为“ alpha”或“预发行版-不适用于生产”,再加上整个github“里程碑”问题(bug,要测试的新功能等),但它并未使区别。整个情况使我感到困惑。我已经提出了一些建议,例如每月进行bug测试“比萨饼日”,以使他们的团队(2-3人)集中精力进行测试,以及“投票给您最喜欢的/最烦人的问题”。有点奇怪-但是他们一直在使用我的软件进行主要演示,所以我不明白为什么没有更多的回推。我想它属于“另一件事要做/不是我的工作”
No Grabbing

@TOMATO:您是否严格拒绝将功能从预发布版本转换为生产版本,直到客户告诉您他已经测试了该功能?您的客户会尝试规避拒绝吗?
布朗

2
+1(表示明显标记的beta版本):如果您将测试版本分发为花哨的紫色,则在主屏幕顶部带有一个绿色的闪烁大横幅,标语为“测试版本-不用于生产用途-不安全-AAARGH! ”,他们不会将其用于演示文稿,甚至不会在客户可能看到的任何地方使用。您可以保留干净的生产版本(如果愿意,可以将其作为人质),直到他们提供一些有用的反馈。
克里斯蒂安·塞弗林
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.