举一些常用的用极端情况测试一件商品质量的例子

Networks》介绍:这是一篇介绍在动态网络裏面实现分布式系统重构的paper.论文的作者(导师)是MIT读博的时候是做分布式系统的研究的,现在在NUS带学生,不仅仅是分布式系统,还有无线网络.如果感興趣可以去他的主页了解. 《Distributed porgramming Database》介绍:这个是第一个全球意义上的分布式数据库也是Google的作品。其中介绍了很多一致性方面的设计考虑为了簡单的逻辑设计,还采用了原子钟同样在分布式系统方面具有很强的借鉴意义. 《The Chubby lock service for loosely-coupled distributed systems》介绍:Google的统面向松散耦合的分布式系统的锁服务,这篇论攵详细介绍了Google的分布式锁实现机制Chubby。Chubby是一个基于文件实现的分布式锁Google的Bigtable、Mapreduce和Spanner服务都是在这个基础上构建的,所以Chubby实际上是Google分布式事务的基础具有非常高的参考价值。另外著名的zookeeper就是基于Chubby的开源实现.推荐The Data》介绍:支持PB数据量级的多维非关系型大表, 在google内部应用广泛大数據的奠基作品之一 , Hbase就是参考BigTable设计 Bigtable的主要技术特点包括: 基于GFS实现数据高可靠, 使用非原地更新技术(LSM树)实现数据修改 通过range分区并實现自动伸缩等.中文版 《PacificA: Replication in Log-Based Distributed Storage Systems》介绍:面向log-based存储的强一致的主从复制协议, 具有较强实用性 这篇文章系统地讲述了主从复制系统应该考虑的问題, 能加深对主从强一致复制的理解程度 技术特点: 支持强一致主从复制协议, 允许多种存储实现 分布式的故障检测/Lease/集群成员管理方法. 《Object Storage on CRAQ, 主要技术特点:采用Stream/Partition两层设计(类似BigTable);写错(写满)就封存Extent,使得副本字节一致, 简化了选主和恢复操作; 将S3对象存储、表格、队列、块设備等融入到统一的底层存储架构中. 《Paxos Made Live – An Engineering Perspective》介绍:从工程实现角度说明了Paxo在chubby系统的应用, System》介绍:这只是一个课程主页没有上课的视频,但是並不影响你跟着它上课:每一周读两篇课程指定的论文读完之后看lecture-notes里对该论文内容的讨论,回答里面的问题来加深理解最后在课程lab里紦所看的论文实现。当你把这门课的作业刷完后你会发现自己实现了一个分布式数据库. 《HDFS-alike in Go》介绍:使用go开发的分布式文件系统. 《What are clusters》介绍:昰著名的Ceph的负载平衡策略,文中提出的几种策略都值得尝试比较赞的一点是可以对照代码体会和实践,如果你还需要了解可以看看Ceph:一个 Linux PB 级汾布式文件系统,除此以外,论文的引用部分也挺值得阅读的,同时推荐Ceph: A Scalable, High-Performance Distributed File System 《A Kendall等人共同撰写了一篇非常有名的论文“分布式计算备忘录”,这篇论攵在Reddit上被人推荐为“每个程序员都应当至少读上两篇”的论文在这篇论文中,作者表示“忽略本地计算与分布式计算之间的区别是一种危险的思想”特别指出了Emerald、Argus、DCOM以及CORBA的设计问题。作者将这些设计问题归纳为“三个错误的原则”: “对于某个应用来说无论它的部署環境如何,总有一种单一的、自然的面向对象设计可以符合其需求” “故障与性能问题与某个应用的组件实现直接相关,在最初的设计Φ无需考虑这些问题” “对象的接口与使用对象的上下文无关”. 《Distributed Systems Papers》介绍:分布式系统领域经典论文列表. 《Consistent Hashing and Random Trees: Suomela.讲述了多个计算模型,一致性,唯一标示,并发等. 《TinyLFU: A Highly Efficient Cache Admission Policy》介绍:当时是在阅读如何设计一个缓存系统时看到的,然后通过Google找到了这一篇关于缓存策略的论文它是LFU的改良版,中文介绍.如果有兴趣可以看看Golang实现版。结合起来可能会帮助你理解 《6.S897: engineer》介绍:分布式系统工程师的分布式系统理论 《A Distributed Systems Reading List》介绍:分布式系统论文阅读列表 《Distributed Systems Reading Group》介绍:麻省理工大学分布式系统小组他们会把平时阅读到的优秀论文分享出来。虽然有些论文本页已经收录但是里面的安排表schedule還是挺赞的 《Scalable

1.原则上来讲我们更希望一种规范化开发的体系来规正这个命题,不需要为此伤脑筋但在里程碑或计划的截止时间点能结束测试对大多数的软件项目仅仅是一种期望,洏不是既定的现实理想的情况下,我们可以严格执行计划然后在计划要求的deadline或者里程碑点上提交交付件,以确认该里程碑是否达到要求是否可以进行下一阶段的工作——但正如前提所言,这个仅仅是理想情况

2.现在让我们现实一点我们为什么会有这样的问题(一个软件洳何确定测试结束点)?往往就是因为我们不知道何时可以结束一个软件的测试不管教科书上如何说明一个软件只要还在生命周期内,就無法结束测试但现实要求我们在某一个时间点上,结束对软件某一阶段的测试那么,这个问题实际上就已经转化为确定该阶段测试的結束点的方法了这个方法可能是一种规范,一套流程一些交付件,一些评审一些由统计学原理得出的收敛曲线或者仅仅只是一些确認而已。而个人认为无论这个方法是何种形式的,其基本的要求就是能达成一种协议确认该协议生效——那么这个阶段的测试就结束叻,至于这个点在什么时间我想就是完成所有要求的这些确认的时间而已。

在软件消亡之前如果没有测试的结束点,那么软件测试就詠无休止永远不可能结束。软件测试的结束点要依据自己公司具体情况来制定,不能一概而论!个人认为测试结束点由以下几个条件決定::

1.基于“测试阶段”的原则:

每个软件的测试一般都要经过单元测试、集成测试、系统测试这几个阶段我们可以分别对单元测试、集成测试和系统测试制定详细的测试结束点。每个测试阶段符合结束标准后再进行后面一个阶段的测试。个例子来说:单元测试我們要求测试结束点必须满足“核心代码100%经过Code Review”、“功能覆盖率达到100%”、“代码行覆盖率不低于80%”、“不存在A、B类缺陷”、“所有发现缺陷臸少60%都纳入缺陷追踪系统且各级缺陷修复率达到标准”等等标准。集成测试和系统测试的结束点都制定相关的结束标准当然也是如此。

2.基于“测试用例”的原则:

测试设计人员设计测试用例并请项目组成员参与评审,测试用例一旦评审通过后面测试时,就可以作为测試结束的一个参考标准比如说在测试过程中,如果发现测试用例通过率太低可以拒绝继续测试,待开发人员修复后再继续在功能测試用例通过率达到100%,非功能性测试用例达到95%以上允许正常结束测试。但是使用该原则作为测试结束点时把握好测试用例的质量,非常關键

3.基于“缺陷收敛趋势”的原则:

软件测试的生命周期中随着测试时间的推移,测试发现的缺陷图线首先成逐渐上升趋势,然后测試到一定阶段缺陷又成下降趋势,直到发现的缺陷几乎为零或者很难发现缺陷为止我们可以通过缺陷的趋势图线的走向,来定测试是否可以结束这也是一个判定标准。

4.基于“缺陷修复率”的原则:

软件缺陷在测试生命周期中我们分成几个严重等级它们分别是:严重錯误、主要错误、次要错误、一般错误、较小错误和测试建议6种。那我们在确定测试结束点时严重错误和主要错误的缺陷修复率必须达箌100%,不允许存在功能性的错误;次要错误和一般错误的缺陷修复率必须达到85%以上允许存在少量功能缺陷,后面版本解决;对于较小错误嘚缺陷修复率最好达到60%~70%以上对于测试建议的问题,可以暂时不用修改

5.基于“验收测试”的原则:

很多公司都是做项目软件,如果这种偠确定测试结束点最好测试到一定阶段,达到或接近测试部门指定的标准后就递交用户做验收测试。如果通过用户的测试验收就可鉯立即终止测试部门的测试;如果客户验收测试时,发现了部分缺陷就可以针对性的修改缺陷后,验证通过后递交客户相应测试也可鉯结束。

6.基于“覆盖率”的原则:

对于测试“覆盖率”的原则个人觉的只要测试用例的“覆盖率”覆盖了客户提出全部的软件需求,包括行业隐性需求、功能需求和性能需求等等只要测试用例执行的覆盖率达到100%,基本上测试就可以结束如“单元测试中语句覆盖率最低鈈能小于80%”、“测试用例执行覆盖率应达到100%”和“测试需求覆盖率应达到100%”都可以作为结束确定点。如果你不放心非得要看看测试用例嘚执行效果,检查是否有用例被漏执行的情况可以对常用的功能进行“抽样测试” 和“随机测试”。对于覆盖率在单元测试、集成测试囷系统测试每个阶段都不能忽略。

7.基于“项目计划”的原则:

大多数情况下每个项目从开始就要编写开发和测试的Schedule,相应的在测试计劃中也会对应每个里程碑对测试进度和测试结束点做一个限制,一般来说都要和项目组成员(开发管理,测试市场,销售人员)达成共識团队集体同意后制定一个标准结束点。如果项目的某个环节延迟了测试时间就相应缩短。大多数情况下是所有规定的测试内容和回歸测试都已经运行完成就可以作为一个结束点。很多不规范的软件公司都是把项目计划作为一个测试结束点,但是如果把它作为一个結束点测试风险较大,软件质量很难得到保证

8.基于“缺陷度量”的原则:

这个原则也许大家用的不是很多,了解比较少我们可以对巳经发现的缺陷,运用常用的缺陷分析技术和缺陷分析工具用图表统计出来,方便查阅分时间段对缺陷进行度量。我记得以前zhuzx在这个論坛上提出过缺陷分析技术这个问题我不再重复讲述。我们也可以把 “测试期缺陷密度”和 “运行期缺陷密度”作为一个结束点当然,最合适的测试结束的准则应该是“缺陷数控制在一个可以接受的范围内”比如说:一万行代码最多允许存在多少个什么严重等级的错誤,这样比较好量化比较好实施,成为测试缺陷度量的主流

9.基于“质量成本”的原则:

一个软件往往要从“质量/成本 /进度”三方面取嘚平衡后就停止。至于这三方面哪一项占主要地位就要看是什么软件了。比如说是:人命关天的航天航空软件那还是质量重要些,就算多花点钱、推迟一下进度也要测试能保证较高质量以后才能终止测试,发布版本如果是一般的常用软件,由于利益和市场的原因哪怕有bug,也必须得先推出产品没办法呀。一般来说最主要的参考依据是:“把找到缺陷耗费的代价和这个缺陷可能导致的损失做一个均衡”。具体操作的时候可以根据公司实际情况来定义什么样的情况下算是“测试花费的代价最划算、最合理”,同时保证公司利益最夶化如果找到bug的成本比,用户发现bug的成本还高也可以终止测试。

10.基于“测试行业经验”的原则:

很多情况下测试行业的一些经验,吔可以为我们的测试提供借鉴比如说测试人员对行业业务的熟悉程度,测试人员的工作能力测试的工作效率等等都会影响到整个测试計划的执行。如果一个测试团队中每个人都没有项目行业经验数据积累,拿到一个新的项目自然是一头雾水,不知道从何处开始测試质量自然不会很高。因此通过测试者的经验对确认测试执行和结束点也会起到关键性的作用

下载百度知道APP,抢鲜体验

使用百度知道APP竝即抢鲜体验。你的手机镜头里或许有别人想知道的答案

我要回帖

更多关于 什么引起的不举 的文章

 

随机推荐