说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

提高大型软件项目质量的一些实用型技术分享

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

金无足赤,人无完人。在软件行业里,想要开发出一件没有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=.nikitaCompressing 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的实时虚拟化层。下面这个界面显示了所有正在运行的和最近刚完成测试的元数据,比如相关工程师、通过/失败数:



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

力量倍增器(ForceMultipliers)

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

1. Transforms

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

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

2. 随机生成查询

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

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

3. Functional Stress

4. 堆栈散列器

5. 生成故障

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

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


总结

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

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

来自:MemSQL.DEVELOPER BLOG

Vuforia 2014 视觉大奖赛:寻找最炫酷AR增强现实应用,迈向巅峰! MapReduce谢幕,谁将成为最终的接棒者? 变身音乐控制器!开源JavaScript库NexusUI 从112台服务器到Q2 50亿基础设施开销,谷歌只用了15年 【技术文章】微信公众平台开发教程新手解惑40则 Qualcomm承诺投入1.5亿美元 扶持中国初创企业 物联网多了把“新板凳” 联想推三款智能硬件 .NET技术+25台服务器怎样支撑世界第54大网站 基调网络发布听云平台:“听”懂App性能 《近匠》豌豆荚李大海:用搜索敲开手机娱乐平台之门 微信开发HTML5轻游戏中的几个坑 【微信大会】企业号、支付功能、智能客服与LBS、电商开发解析 【CTO俱乐部走进海尔】活动图文直播进行中 燃料电池商业化,数据中心或将永不断电? 广告教父的哲学:值得F2P游戏借鉴的8条经验 UC李云:基于Chromium的浏览器如何打造更好体验 一周消息树:颠覆互联网思维?年薪50万码农转行卖凉皮 Coconut2D:跨平台2D游戏及应用开发工具 第八届中国大数据技术大会将于12月中旬隆重召开 10个常见的缓存使用误区 用户暴增下的收入降低,AWS面临尴尬 云数据中心选址PK:微软第一,IBM第二,谷歌最少 不应错过2014微信开发者大会的八个理由 为什么软件测试需要变革? 苹果和IBM成最佳搭档 微软谷歌或受威胁 OpenStack社区又添新成员 浪潮推动开放云生态系统构建 重度使用AWS及Hadoop,Pinterest的自服务平台打造历程 《近匠》腾讯信鸽:基于大数据的推送 超低功耗'Whisper'架构发布:IoT、可穿戴连接性IP新标准! R的数据分析制霸以及企业级应用盘点 第二届游戏运营技术论坛来袭!与大牛共论云时代的游戏运营之道 Tdatabase组件的应用 请问这个检索的SQL语句怎么写? 这样是否就一定安全了,高手进 为什么直接删除不行 asp.net问题,马上给分 在线请教各位一个简单的问题--请问oracle8哪里有的下栽,急!!!!!!! 谁给我Beyond 2003演唱会下载地址! 为什么同一存储文件的程序在win2000个人版下出现:"存储文件时的共享违例"但是在win2000 server下没有,请教各位大师 用什么程序,把用户的安全性调到最低(可以出现警告对话框)??? 在线等待,马上揭贴 谁知到哪里有下载Jbuilder啊。。 如何在Win2000下注册服务程序呢?分不够再加 请问:如何解决“JDBC 服务器”配置不受支持的问题。 万分火急!请大侠指教(100分立即给) 如何在窗体上动态加载图标? MM明天生日放分庆祝(一) 如何进入Java的门? APS.NET下Excel调用:如何让服务器端只运行一个Excel实例?如何结束Excel进程? 快来快来!出事儿啦! 3d效果的正方形!! 惭愧啊!这么简单的数据库问题我都不会,你会吗? 谁告诉我这个马甲“ FrameShare (大城市里的帅哥) ”是谁的,千分不在话下! 在线等待,马上揭贴 再發貼(grid中定位問題) 怎么把长度为8且首位为0的string类型的数据转换成对应的长整型,用什么函数?载线等!!!! 在panel上没有OnKeyPress事件,怎么样实现按键盘某键触发该Panel上的button事件 急急急!高分求解(在线等待) 我有个棘手的问题,不知道高手能否给我解决,关于vc安装的问题 几十万条查循纪录纪录,在WEB页面中分页显示问题?大虾帮忙!!!!! 如何连接SQL数据库 在线等待,马上揭贴 MM明天生日放分庆祝(二)来者有分 Dephi的浏览器控件比VB慢,占用资源也大些! 100分,请大家帮我把下面的文字译成英文,很简单的 parser.parse是什么意思:请看代码(在线等) 菜鸟提问,快请高手解答!谢谢了! 非常值得探讨的问题 VB中的有无现成反三角函数用?函数名是什么? 菜鸟提问,快请高手解答!谢谢了! 上传文件出错误,请问该如何解决 报道 花了两个多月写了一套购物程序,请大家测试测试 ADO操作大字段地问题,急!! 有关C++I/O流库write()和read()函数的问题. 关于线程的简单问题,在线急等 请问一个C#的基本问题! ADO错误,怎么回事? java绘图 我用commondialog1打开了个文件,如何用text1得到这个文件的路径? 〓〓>===→ 怎样屏蔽datagrid的提示信息?up也给分。 对文件进行处理的问题 跪求解决方案(身份验证问题)! Never apart!This is our contract! 英语翻译立体车库是专门实现各种车辆的自动停放及科学寄存的仓储设备.随着城市汽车保有量的不断增加,停车难问题已经成为大中型城市的一个普遍现象.对多停车位、少占空间、使用操作 第四五题物理 要过程 第四,五题怎么写?跪谢 We can get something d____ to eat in that snack bar.空怎么填啊 The prize of the funniest perforer ______Peter.AThe prize of the funniest perforer ______Peter.A.went to B.went over C.went for D.came in 要把过程写出来哦 I ____(fall) asleep while listening to the lecture .Luckily, my partner woke me up in time动词填空 应该填什么?要有详细的过程 谢谢啦 Please wait a minute.I'm____through with these papersA mostly B hardly C already D almost选哪个 These papers haven't been written yet.请教一下,这句有错误吗? 6Please wait a minute.I’m__through with these papers.A mostly Bhardly Calmost 外媒:西班牙家长送小孩学汉语 称就业德国议员差旅费暴涨达688万欧元 媒法国表示希望参与新加坡扩大地铁网络计1990至2010年北半球平均气温或日本自民党大力推动修宪国民公投 拟降新闻集团窃听案冲击传媒司法 陪审团打德媒曝光美国全球监控地图 中国北京上日本一母亲遭高中生儿子殴打数小时后离挪威政府鼓励已婚夫妇每周约会一次 以中国留学生勇救日本小学生 安倍将为其安倍访问土耳其 助日企获福岛核事故后【办公室战争】十大热门职业背后的真相历史上唯一的状元驸马,居然是被逼婚成小户型也要有衣帽间,只要2平米就够啦龙应台:日子怎么过,就是文化1934年营口发现蛟龙事件 至今无法香港占中议员遭大马遣返 入境即被没收【聚焦开发商】大悦城的头羊心经:“五他本来是可以成为共和国元帅的 可惜死支招儿童房清洁与保养,给孩子一个健康今天对我爱搭不理,明天你将后悔不已…暴跌加巨震后六月怎么走?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘