zoukankan      html  css  js  c++  java
  • 提高大型软件项目质量的一些实用型技术分享

    摘要:提高软件产品质量一直是开发人员所追求的目标,而世上并没有什么绝招可以保证程序员开发的产品不存在质量问题。但实践出真知,一些开发者总结平时项目开发经验,通过提高测试覆盖率和使用一些质量工具提高产品质量。

    金无足赤,人无完人。在软件行业里,想要开发出一件没有bug的产品简直是天方夜谭,甚至开发出一款高质量的产品也会难于上青天。但是实践出真知,一些开发者总结平时项目开发经验,通过提高测试覆盖率和使用一些质量工具来提高产品质量。

    当项目经理开始着手一个大型软件项目时,就得思考产品质量问题了,并且从测试就要开始关注。然而并非所有的测试都是一样的,下面提供一些常见的测试类型:

    1. 单元测试
    2. 不变条件测试(断言等)
    3. 功能测试
    4. 压力测试
    5. 性能测试
    6. 可伸缩测试
    7. 基于用户的负载测试
    8. 场景测试

    下面,本文将讨论提升测试覆盖率以及如何使用力量倍增器(force multipliers:对现有测试套件进行改进,再以新的方式测试产品)来成功测试长尾浮现的稀有bug( the long tail of rarely surfaced bugs)。

    把测试计划写在纸上:测试矩阵

    编写测试时,最困难的事情之一莫过于决定测试什么?当产品有很多功能的时候,大家都可以随意用,真正关键的难题是你如何将这些功能有系统的组织(串联)起来。

    大家可以编写测试矩阵,最后把所有的功能大小都写下来,并且汇总到一个大的电子表格中,然后再移交到工程团队。

    投资一个测试执行系统

    你可能会编写许多测试,但集成测试允许开发者排除陷入瘫痪的异常来做出更深的修改。这样的集成应该做到快速、可伸缩,你需要stellar测试基础设施来自动执行添加、管理以及运行测试等操作。一个构建良好的执行系统,其执行功能测试的速度会安全快速地提升。

    构建一个良好的测试基础设施类似于为开发团队编写消费类产品。一个完美的测试执行系统在每次推送后,会运行整个测试套件。

    Psyduck平台可以运行任何测试子集,并且无需担心代码的版本问题。此外,如果你想运行本地不断变化的代码,Psyduck可以打补丁,所以,一般在运行Psyduck之前都会执行如下代码:

    memcompute1:~/memsql/memsqltest nikita(arcpatch-D2497)$ ./psy test --filter=.nikita
    Compressing patch...done.
    Sending 5340 bytes to S3.....done.
    patch id = 901be82c33ee4b07b142d102660e3206Psyduck uses a combination of in-house hardware along with hundreds of Amazon spot instances to run tests as fast as possible in parallel.

    去年夏天,一个MemSQL的实习生创建了一个名为Liveduck的实时虚拟化层。下面这个界面显示了所有正在运行的和最近刚完成测试的元数据,比如相关工程师、通过/失败数:

     


    一个优秀的测试系统所具备的一个特性是,无论在开发者电脑上还是在平台上,每次的运行情况都应该是一样的。此外,每个测试都应该是独立的,以至于它需要零安装。这也有助于测试套件的维护,并且加快故障排查。

    力量倍增器(Force Multipliers)

    下面列出了一些力量倍增器清单,使用其中的任意一个技巧都可以把MemSQL带到一个新的水平。

    1. Transforms

    MemSQL拥有许多Transforms,这里列了几个:

    • 复制Transform
    • 子查询Transform
    • 备份恢复Transform

    2. 随机生成查询

    这里有一些力量倍增器用来随机生成查询:

    • 产生许多不同的查询,但结果一样。
    • 创建智能生成器,来逐步增加生成测试的复杂性。
    • 发现bug后会自动降低查询的复杂性,并且创建一个最小的可再生测试用例。

    3. Functional Stress

    4. 堆栈散列器

    5. 生成故障

    6. 通过代码审查来提高透明度和代码质量

    使用一个好的代码审查工具乃是必须的,比如像Phabricator,它可以集成工作流,并且使用起来非常轻松有趣。


    总结

    在开发一个大型项目时,为了提高产品质量来投资测试基础设施是完全值得的,并且你会收获到许多意想不到的惊喜:

    • 使用stellar工具和力量倍增器可以减轻许多人力劳动,并且对长尾bug的测试非常有帮助。
    • 要时刻意识到当前产品所处的质量状态
    • 快速稳定的运送产品

    来自:MemSQL.DEVELOPER BLOG

  • 相关阅读:
    Vue-CLI项目-axios模块前后端交互(类似ajax提交)
    Vue-CLI项目中路由传参
    HTML标签嵌套规则
    POJ1050 To the Max
    POJ2488 A Knight's Journey
    POJ1083 Moving Tables
    洛谷P1265 公路修建
    POJ2236 Wireless Network
    洛谷P1991 无线通讯网
    POJ1018 Communication System
  • 原文地址:https://www.cnblogs.com/daichangya/p/12959876.html
Copyright © 2011-2022 走看看