你的位置:首页 > ASP.net教程

[ASP.net教程]指数型组织中的质量工程


  最近看了一本叫《指数型组织》的书,里面介绍了指数型组织,一种和传统公司组织形式很不相同,但是在互联网信息时代却是非常重要和非常有活力的组织形式,绝大多数互联网高科技企业都或多或少是指数型组织。指数型组织(Exponential Organization)是指在运用了高速发展的技术的新型组织方法的帮助下,让影响力(或产出)相比同行发生不成比例的大幅增长的组织(至少10倍)。不同于使用人海战术或大型实体工厂的传统组织,指数型组织的建立根基是信息技术,将原本的实体去物质化,转变成需求最大的数字世界中的东西。摩尔定律告诉我们,每18个月信息世界的计算能力的性价比就会大约翻一番,而这便是指数型组织的底层逻辑。

  软件与互联网也是基于信息技术,因此它们应该符合摩尔定律,也具有指数性,在一个具有指数性的软件开发组织中,质量工程应该是如何运作呢?这便是本文的主题。首先让我们来看看指数型组织的MTP、5大外部属性和5大内部属性:

  • MTP(Massive Transformative Purpose):指数型组织往往都有一个崇高而热切的目标,这便是他们的MTP,宏大变革目标可以激励人们创造出自身的社区、群体和文化。对于质量工程来说,也应该有这样的宏大变革目标,从而激励QA工程师努力工作并不断改进工作流程和效率。这样的MTP可以是“尽快的发现缺陷以至于缺陷从未发生”。

     指数型组织5大外部属性:

  • 随需随聘的员工(staff on demand):指数型组织往往会通过外包或者充分利用组织外的人员的力量与技能来补充组织本身,从而具有更大的灵活性和更高的扩展速度。在质量工程中,我们也可以使用外包或者发动公司内部或者外部人员来参与产品的试用和测试,如果发现缺陷可以进行奖励。这样有可能发现专业QA人员难以发现的产品质量问题。
  • 社群与大众(community & crowd):维护一个产品用户和爱好者构成的社群是很重要的,因为他们往往可以对产品提出有价值的观点和建议,并且也可能参与产品的设计和互动活动中,从而改善产品的设计、功能和可用性这些重要的质量要素。
  • 算法(algorithms):谷歌通过pagerank算法使我们能够从搜索中获取更有价值的信息,uber能够匹配算法使得乘客和司机更好的找到彼此,对于维持产品的质量来说,我们可以使用自动化的单元和集成测试来更好的检测和监控产品质量情况,自动化测试的技术是手工测试非常重要的协助和补充,不过,如何构建更有效的稳定的自动化测试集也非常重要,不然维护自动化脚本也需要极大的成本。产品架构设计和可测试性往往是相关的,好的设计也能带来好的测试。
  • 杠杆资产(leveraged assets):对于产品所依赖的环境,无论软件还是硬件,使用而不是拥有可以带来更大的效率和灵活性,比如使用私有云和容器部署产品系统,往往更有效率,产品不需要独占物理机或者虚拟机上的硬件和软件资源,需要使用的时候才借用会更好,这样对于环境的依赖和耦合度会降低。
  • 参与(engagement):可以举办捉虫大赛这些让更多人参与产品使用和测试中,包括产品设计改进同样可以发挥大众的参与。

    5大内部属性

  • 用户界面(interfaces):对于质量工程来说,需要有一个用户友好的界面提供测试资源管理包括测试计划、测试用例、测试脚本、测试执行、测试缺陷和测试报告,比如使用Quality Center,Testlink这些测试管理平台,和bugzilla,Jira这些缺陷管理工具。当然,有技术能力和资源的话量身定做重新开发一套测试管理平台也是可以考虑的。
  • 仪表盘(dashboards):通过各种测试管理和缺陷管理平台可以收集关于产品质量各方面的数据,比如测试用例数,用例覆盖,执行成功率,缺陷,漏测率等指标,实时监控这些关键指标能够及时的了解产品质量情况,从而采取相应措施改进质量工程。
  • 实验(experimentation):伴随着产品的不断维护与改善,需要使用持续集成工具不断构建系统,从而更快速的获取产品运行质量信息。
  • 自治(autonomy):由开发人员和测试人员负责各个模块,通过单元测试和功能测试确保模块自身的质量,并鼓励提出方法和流程改进的措施。
  • 社交技术(social technologies):使用即时通信工具如微信、QQ,或者邮箱和内部论坛进行充分沟通,使得关于产品设计和质量工程相关信息得到更充分的交流和认识。

   总的来说,根据以上指数型组织的11点特性,对于指数型组织中的质量工程,我们需要做到以下三点:

  1. 建立一个核心质量工程团队,充分发挥每一个成员的优势和特长,并且让他们发挥主观能动性,对整个质量工程的改进和完善提出自己的想法;同时和社群及大众维护好关系,并且可以通过有奖励的活动让他们参与到产品设计和改善中。
  2. 利用私有云或者公有云提供的硬件和软件资源进行系统部署,提高系统部署的灵活性和可扩展性,降低对环境的依赖和耦合。
  3. 利用测试管理工具进行测试计划、测试用例、测试脚本管理,利用持续集成工具进行快速的系统构建,利用自动化测试快速的进行回归测试,然后持续的收集质量数据并进行监控,获取质量信息从而帮助进一步的质量工程改进。