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

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

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

添加桌面快捷-Delphi资料 统计中英文字个数-Delphi资料 为 应 用 程 序 添 加 口 令-Delphi资料 应用软件加入全面的功能权限控制-Delphi资料 用Delphi编写安装程序 用Delphi实现超级链接 用Delphi实现子目录级的文件查询 用Delphi自制英语复读机 用DEPHI为应用软件建立注册机制-Delphi资料 优化delphi5.0秘籍大曝光 元件的handle的建立-Delphi资料 元件卷动的改进-Delphi资料 在delhpi程序中获取网络资源信息-Delphi资料 在Delphi中操作快捷方式 在DLL中实现文件的拷贝-Delphi资料 在Report Builder中增加自定义函数-Delphi资料 在Win2000 Beta下安装Delphi 在Word插入字符-Delphi资料 注册表中几个对编程特别有用的地方-Delphi资料 资源文件在DELPHI中的使用 自制替换指定串函数-Delphi资料 API函数快速入门API函数简介-VB资料 API函数快速入门怎样在VB中声明和使用API函数 API函数在VB开发中的应用 API函数在VB中的应用 API实现完美的图片出现效果-VB资料 ListView控件特效-VB资料 Office 95 API 的企业开发者指南-VB资料 SENDMESSAGE函数巧应用 -VB资料 VB 与Windows API 讲座(五) VB5 未公开的函数 关于manifest.tmp文件(大侠帮忙!) 请帮我的忙,好吗!!! 系统怎么不是很稳定? 请问一下各位,哪里有可下的lotus 认证教材和试题,多谢多谢!! 寻求控件编写技术下载网址。 谜语:请问CLP和CLS是什么汉语的简写? up有分!★关于《网络编程〉中的问题★:如何设计udp/ip的完成端口模式,udp协议不需要accept.... 关于重定项问题? are there any software in linux, just as netant,office etc in windows? ASP的中文問題 请问:测试工程师的工作是什么?主要测试软件的哪些项目? (100分征集)如何做使得访问JSP服务器时不用加端口号(当然不能用80)?? 菜鸟求助:关于句柄的问题。请高手多多指教 请问什么是存储过程(在SQL 2000SERVER中)? 1000分的大问题!***************怎么突破内存禁区读写的权限 java学什么?怎么学? java学什么?怎么学? 高分急救:Oracle安装完成后,服务可以启动,数据库不与服务一起启动,要手动启动 如何让启动时不自动进入x windows? 下载问题 如何得到CPU的序列号(编程) 向ActiveX控件是否可以传递数组参数 can i read or copy files in windows OS to linux? 什么错误? 将SYBASE数据库移植到SQL SERVER 过程中遇到的问题。急!help session问题 为什么我的web不能进断点? SO_REUSEADDR的疑问 关于web数据库的问题 怎么解??? 再送100分,求jtable例子! 怎样清除在image上画出的线,矩形(在运行时画上去的)?? 寻找在杭州文三路创业大厦11楼上班的朋友 where can i download simsun, and how can i use it? IIS与Apache一起工作,访问Apache时有什么办法不用指定端口? 是不是微软的一个低级漏洞? 谢谢zheng017给你的win2k superuser password的源程序。 在access2000的开发中,text框中如果只输入了空格,用text1.value取数据返回值却是null,如何能够返回空格呢? 强烈推荐:Robocode! 为了全体中国人!请回答我的问题!现在该如何访问google??????????????? =======请大家帮我介绍几个比较好的,LOTUS做的WEB网站。====== 为什么我在 M$ Win2000 使用钩子拦截键盘鼠标消息就那么困难 请问在datagrid里面如何增加记录??? 打算成立程序员单身者协会,欢迎大家发表意见,欢迎加入, snowy_howe请进来接分 邦定问题 高手指点 请问大家如何实现VB导入导出TXT文件(TAB分隔的数据)到数据库中?请具体一点,最好有例子 如何让一个模块在运行过程中中止运行. 请教如何控制目录返回?急!谢谢! 修改const常量问题 压力容器连续排放罐一般采用什么不锈钢?谢谢~ 如图,在恒力f的作用下,物体位移为s,则力f做的功为? A={1,3,5} B={2,4,6} C={1,2,3,4,5,6} 课本中写的是:集合C是由所有属于集合A或属于集合B的元素组成的.课本中还举了的例子:A={x|x是有理数} B={x|x是无理数} C={x|x是实数}(这里有公共元素x的存在,所 二氧化碳气体保护焊机的种类听了两个名词 晶闸管 和 裂变?(逆变) 这是按什么分类的? 如何制作一件小发明 一个元素可以构成集合吗? 等高线山顶分布的特点是:1呈封闭状2呈开放状3海拔高度由内向外增高4以上都不对 保护文化遗产.今年6月9日是我国第二个"文化遗产日".请从"晋祠""云冈石窟"平遥古城"三处文物古迹中任选一处,写一则保护广告.几句就可以. 为什么a,b,c,x,y,z能构成集合?是不是判定某些元素能不能构成集合,只要看它们是不是具有确定性?是不是集合是人定的,可以没有规律? 等高线闭合且由内向外海拔增加的地形叫什么? 在计算变力的功时A = Fdscosθ 这个为什么要 cosθ a,b,c,x,y,z能否构成集合,请指出其元素 在等高线地形图中,等高线呈封闭状态,有外向内海拔增高的地形部位是 对于物理来说,公式W=|F||S|Cosθ,把位移S分解到F的方向上来求功,是正确的,还是错误的 我很纠结啊对于公式,不够分解F还是S,答案是一样的但例如在光滑水平面上用斜向上30度的力拉一木块,常规 从集合A={a,b,c}到集合B={1,2}可以构成多少个映射?可以把它们都写出来吗? 在等高线地形图中,等高线呈封闭状态,由外向内海拔增高的地形部位是( )A.鞍部 B洼地 C山顶 D峭壁. 正常焊接时,电焊条为什么不整根的熔化?过长时间短路,整根焊条都会变红,直到熔化,这时候焊条上的电流是多大?正常焊接时,通过电焊条的电流又是多大?它为什么又不会整根变红了?难道说这 ab≠0,y=a/|a|+b/|b|+c/|c|可能取的值组成的集合是_ 在等高线地形图上,山峰等高线的分布呈_________状,由内向外,_________变小. co2二氧化碳气体保护焊机维修方法不用下载的 麻点怎么去掉抛光 一个物体在大小为10N的力F的作用下产生的位移s的大小为50m,且力F所做的功W=250根号2j,则F与s的夹角为什么是π/4? 1,3丁二烯与溴会有全加成反应吗? 塑料模具抛光化学药水,可以祛除料纹麻点那种配方 是那几种化学元素配置的 PP原料什么型号是防火? 在电焊中电压是起什么作用,电流起什么作用 怎样制作科技小发明 人类要开发和利用海洋,首先必须保护海洋,珍惜海洋资源 用关联词语连成一句话 请教关于电焊的电流和选择问题.我要用电焊的方法焊壁厚2毫米的铁矩形管,焊成一个正方型的外框.请问:用多粗的焊条合适?2.0的还是2.5的?两个规格的焊条焊出来的焊肉大小怎么样?用多大的 科技小发明制作 呼吁人类保护、珍惜海洋资源的公益广告用语 灯泡与开关是什么联?与插座呢? 试叙等高线中山顶、盆地、山谷、山脊陡崖、鞍部的概念 大哥大姐们 我急用 一场文艺演出共有6个演唱节目,4个舞蹈节目,在下面两种情况下,节目单有多少种不同的排法1.第一个是演唱节目,最后一个是舞蹈节目2.某个演唱节目和某个舞蹈节目必须相邻 再生橡胶污染环境吗?有个人说再生橡胶味道很大,严重污染环境,那再生橡胶对环境有危害吗?我国的再生橡胶业也是很发达的 都很影响环境吗? 关于地理五带和等高线的知识我不是太明白,定有重谢!(特别是五带)还有一部分是春分 秋分 冬至日 夏至日. 一个底面长50厘米,宽40厘米的长方形水箱装了一半水,水深12厘米.棱长10厘米的正方体全部浸在水中,水深 再生橡胶怎样调成灰色 现有一个标准直齿圆柱齿轮.模数m=4mm,齿数z1=30.求分度圆直径、齿顶圆直径、齿根圆直径、齿顶高、齿根高、齿全高. 一个底面长50,宽40长方体水箱装了一半水,水深12.把棱长10正方体零件浸没在水里,水箱水深多少?单位是厘米 内孔30度倒角汽齿,一个锥度,知道小头直径和度数怎么算它的长度和大头直径?要公式.有更详细的也发过来 急 初一地理掌握的知识点是哪些 我有18台额定功率1KW的电机和其他电器,总功率大约是25KW,请问要装多大的单相电表?我所有的电器都是220V的,进线只是单相的 请问这个橡胶腿是个什么成型工艺呢?这个是架子鼓凳子下面腿的防滑胶,老师让我们分析下成型工艺.然后想请问下大家橡胶工艺的模压和注塑成型是一样的么?这个腿是个什么工艺呢?有什么 co2气体保护焊机的型号怎么选择? 3000瓦的电器需要多大的电能表 在串联电路中滑动变阻器在哪里时,滑动变阻器消耗的功率最大 二氧化碳气体保护焊机的保险管有什么作用? 什么是沉积岩的层面层面必须是张开的吗,当一段岩芯某一平面两侧一边是砂岩,一边是泥岩,两者胶结紧密,能说这个面是层面吗? 串联电路中,有两个电阻,什么情况下,滑动变阻器的功率最大?滑动变阻器最大电阻大于另一个 M山顶在700米等高线以内,那么山顶的海拔高度可能是(是确切的数字)快点 某校开展文艺活动,组织了歌咏队和舞蹈队.歌咏队的人数是两个队总人数的八分之五.因排练需要,从歌咏队调90人到舞蹈队后,歌咏队与舞蹈队人数的比是2:3.现在两个队各有多少人?急,5点50分 串联电路滑动变阻器的功率问题电源电压恒定,滑动变阻器阻值变小时,其分压越小,电流变大,那其消耗的功率怎么变化? 地质图有等高线,没标高程有办法看吗 某校开展文艺活动,组织了歌咏队和舞蹈队.歌咏队的人数是两个队总人数的5/8.因排练需要,从歌咏队调90人到舞蹈队后,歌咏队与舞蹈队人数的比是2:3.现在两队各有多少人?(算术解) 大头直径48小头直径18长300是什么锥度 请问设计压力小于0.1Mpa的不锈钢压力容器符合什么标准? 某校组织了歌咏队和舞蹈队.歌咏队的人数是两队总数的八分之五.后来从歌咏队调90人到舞蹈队,这时两队人的比是二比三.现在两队各有多少人 知道 图纸上 大头 长度 锥度比 求小头怎么求 大头D=18 长度L=21 锥度比C=1:10 求小d
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘