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

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

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

AMD Mantle再添新作,引发下代GPU架构猜想 谈DAM决策,自建还是SaaS 证据显示:Linux战争已经转移到OpenStack RestKit:iOS开发必备,告别众多无聊代码 技术新突破:手机和平板可远程控制PC,Chrome Remote Desktop亮相 物联网高速公路上,快数据如何驱动分析 苹果或将使用雅虎的搜索引擎,抛弃谷歌 百万用户规模的系统如何扩展 大数据需要软件定义存储 倒计36小时!2014中国Spark技术峰会即将召开! 设计师专宠,Startup强大的UI设计框架 走进金山云:从技术走向服务 Qt Creator 3.1.0发布,全面支持iOS、Android、WP Google大中华区总裁石博盟与中国大学生畅谈科技与创新 阿里云:从防到攻,深入浅出DDoS 大数据处理分析的六大最好工具 微软:Windows Phone开发者可回复用户评价 不断缩水后的微博上市首日大涨19% 曾一度涨超40% Snapdragon LLVM编译器全新升级 支持骁龙64位处理器 EDP:基于Node.JS与NPM的企业级开发平台 想改变世界,先改变自己——知名Hacker、发明家Mitch Altman专访 《近匠》iHealth,健康大数据助力硬件“破壳” 一周消息树:如何做到每天写代码? 一周热点:微软SQL Server 2014三大新特性 《Make》创始人Dale Dougherty:全民创客 DevOps正在扼杀程序员? OpenStack新版本:新增近350个功能,修复Bug超2900个 【走近讲师】易欢欢:数据对接和后台是互联网金融的技术最难点 最火HTML5 JavaScript游戏引擎:国外篇(二) 挑战最强大脑——来自全球的14个编码社区 摩尔定律让位于贝索斯定律 我的linux可以访问操作系统是98的机器,但不能访问w2k,why??? 超高技术难题,手写的数据窗口数据源代码问题 哪里有source inside,或者是source navigator 谁知道ISO8583的标准 对象,实例,reference有什么区别吗 程序员有时间交女朋友吗????????? 怎样做才能使后面的子程序在前面子程序已经画好的图形里添加画线? 哪里有VC6的英文版下载呀,市场上买不到英文的呀 大家说说看,vc连接access的应用程序,用什么做显示数据好。 有没有雷锋?! ccnuxjg(阿木) 各位高人,我GG考我一个谜语,限我今天答复,请大家帮帮我。(四字成语) 怎样删除重复的行(mssql) 一个页面,如何实现左边为链接信息,右边为内容? 关于模式对话框的问题 项目实战两问,关于操作系统和光盘运行,高手请进! 怎样判断发信成功 CDONTS.NewMail 在杭州搞JSP的,请进来交换QQ,邮件!我们需要交流! 如何用sendmessage让一个窗口最小化 我想把COM+组件的客户端安装包打到install shield 的安装包中,并且自动安装com+客户端安装包,可是。。。。 word2000中不能使用打印功能,为什么? CSDN是怎么了,三天两头出问题啊~!!!!!!!!!!!!!!!!!!!!!!!!!!!!! OleContainer.SaveToFile的文件用Word怎么打不开? vb的多线程如何实现? 这句话是什么意思!!!! 有个女孩问我的代码理论问题……紧急!!有请各路大仙 指针与数组常通用,但一个存值,一个存地址,能不能讲一下他们的内存如何分配,怎样互用的 我一和女朋友有矛盾时,就感到浑身无力,什么也做不下去,脑袋乱七八糟的,做什么都不专一,直到问题解决,不知大家有没有和我有一样感觉的? 海星是南京大学的吗? 请问。vb有没有字体选择的控件(.ocx) 请问在该专区里有没有四川绵阳水校到深圳的王师兄!huan_91_cn@china.com 游戏爱好狂们注意:有没有愿意建立游戏网页!!! 各位大虾请帮忙!!谢谢!!!!! 有关数据报表的处理,采用EXCEL 听说所有Enterprise Manager工具都允许简单地通过单击鼠标来切换身份 怎么恢复? 在数据库中建立临时表来进行数据操作,我对它在使用时何时建立何时删除不太了解,能给我说明一下吗? 如何在触发器中调用存储过程(sql server 或者 oracle)(无内容) 请问哪里有完整版的sql server下载,不要钱的,不要序列号的??? 请较两个英文短语的理解 我要做个套打的程序,希望高手可以提示一点思路,能用QR吗? 加载驱动的问题!! 请教DELPHI中的打印机设置问题,各位师兄请进来看一下! 急问:怎样编程实现打开已保存的quickreport文件(*.QRP)?主要是得到保存的文件名后如何处理打开操作 请问这语句的意思? 在用Rose进行系统分析的过程中,如何对界面的进行详细描述? 谁知道Kylix要在linux内核2.?版本以上才能安装?? 急死菜鸟拉,大家帮帮忙呀 高分求助!!!配置Tomcat4.0 请问那里有php聊天程序?能适合虚拟主机(Unix)、无数据库 有兄弟如此,我..... (高二物理)电源电动势与电源电压的区别是什么呢?书上有:“电源的电动势等于电源没有接入电路时两极间的电压.”1 这句话中所说的电压是指电源内部电压呢还是外部电压呢?2 电源接入 为什么霜前冷雪后寒 再生胶价格 电源电动势给解释一下? 天然橡胶垫的硬度怎样选择? 高强力再生胶有什么作用? 电压接近电源电动势说明了什么是两点间电压 ANSYS WORKBENCH 如何定义硬度为85的天然橡胶减震块的材料属性需要在workbench环境下定义一个硬度为85的天然橡胶减震块的属性.由于我没有相应的数据,就在材料库里边选了workbench自带的mooney-rivli 高强力再生胶的拉伸强度是多少呢? 一项工程,甲单独做要15天,乙单独做要20天.现在甲乙合做2天后,乙队抽走.甲队还要几天完成? 5个厚天然橡胶硬度65大概怎么卖的 如果用铅笔触碰蜗牛(外界的刺激),蜗牛会做出相应的反应.蜗牛对刺激做出反应有什么意义? 一项工程,甲队独做20天完成,乙队独做15天完成,现在甲现在先独做5天,剩下的由甲乙合作,还需几天完成?请回答,并写出步骤 怎样理解电源电压和电动势的方向? 汽车奔驰在辽阔平坦的公路上.这句病句怎么修改 “霜前冷,雪后寒”告诉我们什么道理? 电动势是什么,通俗点. 在原句上用修改符号修改病句.汽车奔驰在平坦辽阔的公路上. 海市蜃楼的形成 "霜前冷,雪后寒"包含了什么道理? 什么汽车什么奔驰在什么马路上 扩句 为什么会产生海市蜃楼? 你听说过“霜前冷,雪后寒”吗?从科学的角度分析这句话的含义是A.霜形成之前的气温一定比下雪后低B.霜形成的气温一定比雪形成时的气温低C.霜后的气温一定比霜形成前高,雪后气温一定比 一项工程,甲乙两队合做要12天完成,现在甲队独做18天,余下的由乙接着做,8天正好做完,如果由甲独做这项工程,要多少天完成? 初二关于磁的一切总结, 俗话说:“霜前冷,雪后寒”请简单叙述它的道理 为什么人们常说“霜后冷,雪后寒”? 初二物理第一章【具体】的总结超具体的,越具体的越好, NBR低硫硫化体系是什么意思?什么是低硫硫化? 它到底是多少克,密度是天然橡胶体积 = 7.8809110e+04 毫米^3曲面面积 = 3.0771309e+04 毫米^2密度 = 9.5000000e-01 公斤 / 毫米^3质量 = 7.4868654e+04 公斤这东西在proe中计算的,但是实际那个产品的重量是多 霜前冷,雪后寒的道理 常见的硫化体系主要的化合物是哪些? 苯的密度大还是天然橡胶的密度大?苯和天然橡胶的溶解度参数是多少?回答者请注明资料出处. 一项工程,如果单独做,甲需10天完工,乙需15天完工,丙需20天完工.现在三人合作一项工程,甲独做需10天完成,乙单独做需15天完成,丙单独做需20天完成.现在三人合作,中途甲先休息一天,乙在休息 怎样理解电压、电量、电流的概念、区别?1楼不详细,我要他们的概念(定义) “宽广的马路上,各式各样的汽车在穿梭来往”改成比喻句 现在有一项工程,甲单独做30天,如果甲和乙合作需要20天,现在甲做了15天,然后乙来完成,还需要几天? 电压的概念是什么 汽车开得快用什么比喻句 异戊二烯制天然橡胶的方程 差模电压和共模电压的定义分别是什么?它们有什么区别? 把”汽车开向前方”改成比喻句 一项工程甲独做30天完成,乙独做15天完成,丙独做20天完成.现在三人合作,中途甲因事休息,这样完成任务一共用了8天,问甲休息了几天?一项工程甲独做30天完成,乙独做15天完成,丙独做20天完 一项工程,单独完成,甲队需要15天,乙队需要20天.现在甲、乙两队合作甲、乙两队各休息了几天,所以用了11天改成12天,已知甲队休息了3天,乙队休息了?天 蜗牛能对外界的刺激做出反应,即具有______________答案具体一点. 一项工作甲工程队单独施工需要30天才能完成,乙队单独需要20天才能完成.现在由甲队单独工作5天,剩下的工一项工作甲工程队单独施工需要30天才能完成,乙队单独需要20天才能完成.现在由甲 一项工程,单独完成,甲队需要15天,乙队需要20天.现在甲、乙两队合作途中甲、乙两队各休息了几天所以用了12天才完成了全工程.又已知甲队休息了3天,求乙队休息了多少天? 如果用铅笔碰蜗牛,蜗牛会做出相应的反应.这说明什么意义?初一的科学作业本第2章第三题. 电动势和电压有什么区别 汽车在马路上慢慢地行驶改为比喻句 十五的月亮像什么?求比喻句. 请问:电动势与电压有什么区别? 一项工程,单独完成,甲队需要15天,乙队需要20天.现在甲乙两队合作,因中途甲乙两队各休息了加添,所以用了12天才完成全工程.已知甲休息了3天,乙队休息了几天? 汽车奔驰的扩写句子速答! 电源电动势和电源电压有什么区别 为什么霜前冷,雪后寒 十五的月亮圆.改为比喻句. 海市蜃楼的成因是( )A.光的直线传播B.光的漫反射C.光的折射D.光的色散 为什么"霜前冷,雪后寒"? 谁有高强力再生胶配方?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn