2015-10-08 23:25:49 ggf123456789 阅读数 756
  • 2019年C语言基础教程【源码,笔记软件,案例】

    C语言概述 什么是C语言 一提到语言这个词语,自然会想到的是像英语、汉语等这样的自然语言,因为它是人和人交换信息不可缺少的工具。 而今天计算机遍布了我们生活的每一个角落,除了人和人的相互交流之外,我们必须和计算机角落。

    10623 人正在学习 去看看 传智

《软件测试过程改进》读书笔记





第一部分  软件测试过程成熟度

    第1章  软件测试的六个要点

    第2章  技术与实践

    第3章  白纸方法

第二部分  测试过程改进框架

    第4章  树立注重实际的观点

    第5章  重要选择:测试什么、何时测试、怎样测试

    第6章  重要方法:测试的框架

第三部分  测试方法

    第7章  验证测试

    第8章  确认测试

    第9章  控制确认成本

    第10章  测试任务、可交付文件及其在生存周期中的对应阶段

    第11章  软件测试工具

    第12章  度量

第四部分  测试管理技术

    第13章  测试的组织方法

    第14章  目前的做法、发展趋势和挑战

    第15章  获得可持续收益



















注:

        软件测试过程改进 Software Testing in the Real World Improving the Process  Edward Kit著 李新华 陈丽容 马立群 等译    机械工业出版社 中信出版社 2003

2015-10-08 23:31:02 ggf123456789 阅读数 1509
  • 2019年C语言基础教程【源码,笔记软件,案例】

    C语言概述 什么是C语言 一提到语言这个词语,自然会想到的是像英语、汉语等这样的自然语言,因为它是人和人交换信息不可缺少的工具。 而今天计算机遍布了我们生活的每一个角落,除了人和人的相互交流之外,我们必须和计算机角落。

    10623 人正在学习 去看看 传智
《微软的软件测试之道》读书笔记








第一部分  关于微软
    第1章  微软的软件工程
        偏重于产品独立发布的模式通常称为PUM(Product Unit Manager)即产品部门经理模式。

    
    第2章  微软的软件测试工程师
        测试工程师的主要职责:制定测试计划、设计测试用例、分析缺陷的根本原因、参与程序代码的审查和产品设计的审查、开发测试自动化程序
        我们(微软)在软件测试上面临着两种挑战:一是我们要培养测试工程师成为被测试的产品领域的专家; 二是培训他们怎样去测试。
        
        SDET培训路线图
        
        测试职种的发展道路: 测试架构师(一种角色而非一个职位) 、测试独立贡献者
        成为管理人员并不意味着升职(这是一个“平级”的变化)

        
    第3章  工程生命周期
        微软的软件工程:
               瀑布模式:  图 3-1
               螺旋模式:  图 3-1
               敏捷开发
               里程碑模式  图 3-2
               图 3-5 软件生命周期的工作流程



第二部分  关于测试
    第4章  软件测试用例设计的实用方法
        实践良好的软件设计和测试设计 --> 软件设计包括制定计划和解决难题

        测试设计和好的软件设计有很多相似处,甚至可以说,和好的设计都有相似之处。测试设计需要从计划和问题解决方面来决定做哪些测试,
以及哪种测试在验证功能和确认错误路径处理得当上是最有效的。测试设计中最重要的方面之一是能预见用户的需要和期望,然后创建能够恰当地
处理这些需要的测试。良好的测试设计通常从对软件设计的审查或批评开始。通常,对待设计审查和对待代码审查是很相似的,也就是设计者对设计
进行解释,参与者提出问题并提供反馈。一个好的设计审查会对所有主要的设计决策中的各种备选方案做深度比较。比较的目的是要就建立什么、
怎样去建立、还有更重要的,如何去测试它们等方面,达成共识。良好的设计和良好的执行在成功的软件开发工程中占举足轻重的地位。
        
        使用测试(设计)模式
                测试模式共享的常用形式是模板。测试设计模板包括10个属性:名称、问题、分析、设计、预言、用例、缺陷和局限、相关的模式
                基于模板的测试设计方法:交流测试想法、加速测试设计进程、构建测试设计的知识库
         
        估计测试时间 --> 测试需要多少时间?
               估计一个功能或是应用程序的测试时间的方法:拷贝开发时间。
        如果某个开发任务计划需要一个人工作两周,那么估计写自动化测试和描述手工测试用例也需要一个人工作两周。这在实际实践中只是一个
出发点,因为有太多因素可以影响到测试的进程,所以在估计测试时间时应该把这些因素都考虑在内。        
        如果需求(功能规格)写得不好或没有,那么最好的测试设计的出发点就是问问题。如果程序已经可以运行,那么最好的测试设计的方法就是
运行程序。
        很多在测试过程中被错过了的软件缺陷都是因为测试人员没有问足够多的问题或者他们没有问对问题。问问题是测试设计阶段获得需要的
知识以进行检查的最好的方法。

         好的测试策略:一个测试策略引导着测试设计,而且可以为测试团队的测试设计提供方向。

         思考可测试性:早点思考可测试性。 可测试性是指软件可以被完全有效测试的程度。
                       测试人员可以用来提高可测试性的最普遍方法是在需求或设计评审中简单地问,“我们怎么来测试这个东西?”
                       一种提高软件可测试性的简单模式:SOCK-->简单、可见、可控制、知识

        测试设计规格说明: 测试设计规格说明描述了测试过程中的方法和意图,所以它就成为整个测试过程的不可分割的一部分并贯穿整个产品的
生命周期。
         
        数据测试--用好的和坏的:测试用例一般包括验证测试(使用期望的输入来验证产品功能的测试)和错误避免测试(使用预期之外的数据来检验
产品是否适当处理的测试)
         
        在测试用例设计中要考虑的其他因素:进度,资源以及质量是可以影响软件测试的依赖属性。
 
        黑盒测试和白盒测试: 
        黑盒测试:一种设计测试用例的方法。不需要知道任何关于应用程序内部是如何实现各种功能的知识。根据一个应用程序的用户只关心这个应用
程序是否满足了他们的需求,而不关心这个应用程序是如何被设计和实现的原理,黑盒测试的方法是一个有效的方法去模仿和预估用户会如何使用这个
产品。另一方面,单纯的黑盒测试方法也经常会导致过度测试一个应用程序的某些部分而对另一些部分没有足够的测试。
        
        白盒测试:通过对应用程序内部代码或者用户看不到的模式进行分析,并以此设计测试用例。单一凭借白盒测试方法设计的测试用例一般
                          都非常详尽,但无一例外的总是会错过关键的终端用户使用场景。
        
        解决这个设计测试用例的两难处境就是使用灰盒测试。设计测试首先是从用户关心的角度出发的(黑盒测试),然后再利用白盒测试方法保证
        测试用例能够有效并全面的覆盖被测对象。

        测试工程师需要从两个方面进行测试:用户角度 和 确定应用程序的正确性角度。为了能够有效涵盖这两个角度,必须考虑使用黑盒测试和
                                                                    白盒测试两个方法。
        
        探索性测试(微软):探索性测试是一种手工测试方法,每一步的测试和验证都是基于前一步的操作。
                                       结对测试 --> 探索性测试方法。


    第5章  功能测试相关技术
        功能测试的需求:探索性测试--主要关注于行为测试。 然而探索性测试总的来说不能适应大型复杂的项目,或是任务非常关键的软件。
        使用黑盒方法进行软件行为测试,仅能企及所有测试能够覆盖范围的35%~65%之间。 从用户界面出发进行软件行为测试的确很重要,
        但如果它被用作唯一或主要的测试途径,我们就很有可能浪费时间在效果不佳的测试上,并且会漏过产品的某些重要的领域。

                        图 5-1 演示黑盒测试有效性的文氏图

        三角形测试: 大多数测试工程师只写了一个针对合法整型值导致非法三角形的测试、一个针对等边三角形的测试、一个针对不规则三角形的
                              测试、一个针对等腰三角形的测试。这四个测试仅仅覆盖了软件中最关键路径的50%而已。
        
        等价类划分
                等价类划分,简单地说就是一种工具,使得测试工程师能够以系统化的方式评估一个功能点中每个参数的输入和输出变量。不过,
        要等价类划分技术发挥出最大功效,就要求我们针对特定系统的上下文中的每个参数的变量数据实施全面的分析。所以在设计测试之前,
        有必要仔细为每个输入和输出参数涉及的变量数据实施解耦和建模以将其模塑成分离的合法及非法分类子集。

        等价类测试的导出:  创建每个合法分类子集的合集,直到测试取遍合法分类的所有子集为止; 再对非法数据子集依次评估。
        等价类划分技术的整体效率主要依赖于测试人员的变量分解能力。(把变量数据建模为等价类子集需要对给定上下文环境系统的认识和理解。)
                  
        变量分解:等价类划分中最困难、且最具挑战性的方面是把数据分解为唯一合法和非法类子集。

        强化实践:在每一个等价类数据集合中使用多个元素来增加覆盖的宽度并减少错误功能的可能性。(一个等价类内抽取多个元素,以增加覆盖宽度)
                      
                      把数据分解为在合法和非法类中的离散集合的四个启发式方法:值的范围、变量相似组、唯一值、特殊值
                      范围: 在数据的邻近集合中最小值和最大值间的任何数据点应产生相同的结果。
                          例子:假设要从1到999间输入一个整数。合法的等价类是 >=1 和 <=999       
                                                                                      非法的等价类范围是 <1 和 >999的整数
                      
                      只要元素被等价地处理,那么元素组是允许的。
                          例子:车辆的类型决定了征税的类别,包括:卡车、小汽车、摩托车、房车、拖车等。属于相同的征税类别,那么这个元素组认为
                                     是等价的。
                             
                      唯一值:在类或子集中的数据可能以不同于同一类或子集中的其他数据的方式被处理。
                          例子:数据 1月19日,2038,3:14:07在处理时间日期数据的应用中是唯一的。它应被分解为离散的子集。
                      
                      特殊值:条件必须提供或必须不被提供。
                          例子:在SMTP协议中,字符"@"是一个特殊字符,不应该作为E-mail名称或域名的一部分。
            
            等价类划分实战 ---> 帮助你更好地理解如何把参数变量划分为离散的合法和非法数据子集。  
            参数子集分析
            等价类划分测试
            等价类划分小结

            边界值分析---->最著名的功能性测试技术
            边界值分析:一个全新的公式(用于基本边界值分析的测试数量可以用4n+1来计算(或者6n+1 包括边界最小值-1 和 最大值+1) ),n等于独立
                                 参数的个数。结合公式,可以更好地估计所需边界测试的数量,可提供更广泛的测试集合。

            边界值分析是个以介于特定边界值上下的数据作为研究目标的功能性技术。历史经验和递归问题的根本原因分析表明异常总是发生在独立输入
    输出参数的边界条件附近。对处在边界条件的变量进行系统分析增加测试的有效性,提供更优的信息,增加检测特定类缺陷的可能性。这种缺陷
    可能在早期测试周期中,源于输入或输出参数的线性变化。
    
    组合分析
            一个参数的输出状态取决于输入参数可变状态的各种组合。
            为了系统地测试几个相关参数可变状态间的相互作用,相对其他可选策略而言,组合分析是最优方法。



    第6章  结构测试技术
        块测试
        决策测试
        条件测试
        基础路径测试



    第7章  用代码复杂度分析风险



    第8章  基于模型的测试




第三部分  测试工具和系统
    第9章  缺陷和测试用例管理


    第10章  测试自动化


    第11章  非功能测试


    第12章  其他工具


    第13章  用户反馈系统


    第14章  测试“软件加服务”



第四部分  关于未来

    第15章  今天解决明天的问题


    第16章  建设未来














注:
        微软的软件测试之道  How we test software at Microsoft    Alan Page  Ken Johnston  BJ Rollison著 机械工业出版社 2009


2015-01-07 10:53:27 ggf123456789 阅读数 1411
  • 2019年C语言基础教程【源码,笔记软件,案例】

    C语言概述 什么是C语言 一提到语言这个词语,自然会想到的是像英语、汉语等这样的自然语言,因为它是人和人交换信息不可缺少的工具。 而今天计算机遍布了我们生活的每一个角落,除了人和人的相互交流之外,我们必须和计算机角落。

    10623 人正在学习 去看看 传智
《软件测试的艺术》--读书笔记






第一章  一次自评价测试
        所谓软件测试,就是一个过程或一系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。
自评价测试:我们要求设计一组测试用例(特定的数据集合),适当地测试一个相当简单的程序。为此要为该程序建立一组测试
数据,程序须对数据进行正确处理以证明自身的成功。下面是对程序的描述:
        这个程序从一个输入对话框中读取三个整数值。这三个整数值代表了三角形三边的长度。程序显示提示信息,指出该三角形
究竟是不规则三角形、等腰三角形还是等边三角形。


用你的测试用例集回答下列问题,借以对其进行评价。对每个回答“是”的答案,可以得1分:
1.是否有这样的测试用例,代表了一个有效的不规则三角形?
注意:如1,2,3和2,5,10这样的测试用例并不能确保“是”的答案,因为具备这样边长的三角形不存在。(两边和大于第三边)
 
2.是否有这样的测试用例,代表一个有效的等边三角形?
 
3.是否有这样的测试用例,代表一个有效的等腰三角形?
注意:如2,2,4的测试用例无效,因为这不是一个有效的三角形。
 
4.是否至少有三个这样的测试用例,代表有效的等腰三角形,从而可以测试到两等边的所有三种可能情况?
例如:3,3,4;3,4,3;4,3,3
 
5.是否有这样的测试用例,某边的长度等于0?
 
6.是否有这样的测试用例,某边的长度为负数?
 
7.是否有这样的测试用例,三个整数皆大于0,其中两个整数之和等于第三个?
注:也就是说,如果程序判断1,2,3表示一个不规则三角形,它可能就包含一个缺陷
 
8.是否至少有三个第7类的测试用例,列举了一边等于另外两边之和的全部可能情况?
例如:1,2,3;1,3,2;3,1,2
 
9.是否有这样的测试用例,三个整数皆大于0,其中两个整数之和小于第三个整数?
例如:1,2,4;12,15,30
 
10.是否至少有三个第9类的测试用例,列举了一边大于另外两边之和的全部可能情况?
例如:1,2,4;1,4,2;4,1,2
 
11.是否有这样的测试用例,三边长度皆为0?
例如:0,0,0

12.是否至少有一个这样的测试用例,输入的边长为非整数值?
例如:2.5,3.5,5.5
 
13.是否至少有一个这样的测试用例,输入的边长个数不对?
例如:仅输入了两个而不是三个整数
 
14.对于每一个测试用例,除了定义输入值之外,是否定义了程序针对该输入值的预期输出值?

        当然,测试用例集即使满足了上述条件,也不能确保能查找出所有可能的错误。但是,由于问题1至问题13代表了该程序不同
版本中已经实际出现的错误,对该程序进行的充分测试至少应该能够暴露这些错误。
        开始关注自己的得分之前,请考虑以下情况:以我们的经验来看,高水平的专业程序员平均得分仅7.8(满分14)。
        这个测验说明,即使测试这样一个小的程序,也不是件容易的事。如果确实是这样,那么想象一下测试一个十万行代码的空中
交通管制系统、一个编译器, 甚至一个普通的工资管理程序的难度。随着面向对象编程语言(C++、Java)的出现,测试也变得更
加困难。
 
注:编程语言的发展方向:面向过程语言--》面向对象语言--》函数式语言/动态语言。
        随着语言的发展,测试的方法、工具也会有不断的进化。类似Facebook无专职测试,类似Testin的第三方测试服务平台会慢慢
成为主流。对硕果仅存的专职测试人员的要求也越来越趋近于开发人员,而专职测试每天可能会有60%以上的时间在编码和沟通。
 
 
 

第二章  软件测试的心理学和经济学
 
“测试是为了发现错误而执行程序的过程”。
 
黑盒测试:重要的测试策略,又称为数据驱动的测试或输入/输出驱动的测试。使用这种测试方法时,将程序视为一个黑盒子。测试
                    目标与程序的内部机制和结构完全无关,而是将重点集中放在发现程序不按其规范正确运行的环境条件。
白盒测试:另一种测试策略,或称为逻辑驱动的测试。允许我们检查程序的内部结构。这种测试策略对程序的逻辑结构进行检查,
                    从而获得测试数据。
                   
总结:
            测试投入的目标在于通过有限的测试用例,最大限度地提高发现的问题数量,以取得最好的测试效果。
            尽管穷举输入测试要强于穷举路径测试,但两者都不是有效的方法,因为这两种方法都不可行。

软件测试的重要原则:
1.测试用例中一个必需部分是对预期输出或结果进行定义;
2.程序员应当避免测试自己编写的程序;(反例:Facebook)
3.编写软件的组织不应当测试自己编写的软件;(反例:Facebook)
4.应当彻底检查每个测试的执行结果;
5.测试用例的编写不仅应当根据有效和预料的输入情况,而且也应当根据无效和未预料到的输入情况;
6.检查程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”;
7.应避免测试用例用后即弃,除非软件本身就是一个一次性的软件;
8.计划测试工作时不应该默许假定不会发现错误;
9.程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比;
10.软件测试是一项极富创造性、极具智力挑战性的工作;

注:
    第一条测试用例的必需部分包括预期结果、实际输出、操作步骤。第五、第六条:测试用例的编写应当根据有效和预料到的
输入以及无效和未预料到的输入。有效和可预料的输入来自需求规格,用以检查程序是否做了应该做的
无效及未预料到的输入
用来检查程序是否做了不应该做的。
第七条:强调了测试用例的可复用性。第九条:是比较重要的原则。即在程序中,发现错误的
地方,很可能隐藏着更多的错误未被发现。

 


 
第三章  代码检查、走查与评审
 
错误发现得越早,改正错误的成本越低,正确改正错误的可能性也越大。
 
代码检查与走查是两种主要的人工测试方法。
 
代码检查----用于代码检查的错误列表:
*数据引用错误
*数据声明错误
*运算错误
*比较错误
*控制流程错误
*接口错误
*输入/输出错误
*其他检查
 
图示
 
代码走查




第四章  测试用例的设计
                --------测试人员最为重要的技巧-掌握如何编写有效测试用例

软件测试中最重要的因素是设计和生成有效的测试用例。

本章将要讨论的测试方法:
    黑盒测试:等价类划分、边界值分析、因果图分析、错误猜测;
    白盒测试:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖;
推荐的步骤:先使用黑盒测试方法来设计用例,然后视情况需要使用白盒测试方法来设计补充用例。

白盒测试
1.逻辑覆盖测试
2.等价类划分
3.边界值分析
4.因果图
 
错误猜测:
 
测试策略:
1.如果规格说明中包含输入条件组合的情况,应首先使用因果图分析方法。
2.在任何情况下都应使用边界值分析方法。
3.应为输入和输出确定有效和无效等价类,在必要情况下对上面确认的用例进行补充。
4.使用错误猜测技术增加更多的用例。
5.针对上述用例集检查程序的逻辑结构。


 
 
第五章  模块(单元)测试

1.测试用例的设计方式
2.模块测试及集成的顺序
3.对执行模块测试的建议




第六章  更高级别的测试

一、功能测试

二、系统测试
包含:
    功能测试
    容量测试
    强度测试
    易用性测试
    安全测试
    性能测试
    存储测试
    配置测试
    兼容性/配置/转换测试
    安装测试
    可靠性测试
    可恢复性测试
    适应性测试
    文档测试
    过程测试

三、验收测试
 
四、安装测试
 
五、测试结束准则



 
第七章  调试
        调试是执行一次成功的测试之后所要进行的工作。记住,所谓成功的测试,是指它可以证明程序没有实现预期的功能。调试是
一个包含两个步骤的过程,从执行了一个成功的测试用例,发现了一个问题之后开始。第一步,确定程序中可疑错误的准确性质和
位置;第二步,修改错误。
 
暴力法调试:
 
归纳法调试:
 
演绎法调试:
 
回溯法调试:
 
测试法调试:
 
调试的原则: 1.定位错误的原则    2.修改错误的技术
 
错误分析:
 
 
 
 
第八章  极限测试
        20世纪90年代出现了一种名为极限编程(XP)的新型软件开发方法。一位名叫Kent Beck的项目经理设计了这种轻量、敏捷的
开发过程,并于1996年在戴姆勒-克莱斯勒公司的项目中进行了首次测试。
        XP模型高度依赖模块的单元和验收测试。总的来说,对每个无论多小的递增的代码变更,都必须进行单元测试,以确保代码库
满足其规格说明的要求。事实上,测试在XP中的地位如此重要,以至于需要首先创建单元(模块)测试和验收测试,然后才创建代
码库。这种形式的测试被称为极限测试(XT)。
 
极限编程基础
 
XP开发模型用12个核心实践来驱动该过程。简单来说,这12个核心的XP实践可以归纳为4个概念:
1.聆听客户和其他程序员的谈话;
2.与客户合作,开发应用程序的规格说明和测试用例;
3.结对编码;
4.测试代码库;
 
图:极限编程的12个实践
 
极限测试:概念
 
极限测试的应用
 
 
 
 
第九章  测试因特网应用系统
 
 
电子商务的基本结构
 
测试的挑战
 
测试的策略
 
架构:
一、数据表示层:
表示层在测试时的重点:
    内容;
    Web站点结构;
    用户环境;
 
注释:在对用户环境的测试中需要特别关注浏览器的兼容性问题:ActiveX控件、JavaScript、VBScript、Java applets等。
 
 
二、业务逻辑层:
业务层在测试时的重点:
    性能;
    数据有效性;
    事务;
 
 
三、数据访问层:
数据层在测试时的重点:
    响应时间;
    数据完整性;
    容错性和可恢复性;
 

注:
        不同架构下的测试思路:

1. BS架构:

2. CS架构:


因为部分章节涉及的领域工作中没有接触到,等以后用到再补充。



注:
        The Art Of Software Testing(Second Edition)    美  Glenford  J.Myers  等著    王峰  陈杰  译    机械工业出版社    2006.1

2014-12-25 11:33:02 Breeze00 阅读数 96
  • 2019年C语言基础教程【源码,笔记软件,案例】

    C语言概述 什么是C语言 一提到语言这个词语,自然会想到的是像英语、汉语等这样的自然语言,因为它是人和人交换信息不可缺少的工具。 而今天计算机遍布了我们生活的每一个角落,除了人和人的相互交流之外,我们必须和计算机角落。

    10623 人正在学习 去看看 传智

第三章  测试手段

本章,书中重点讨论了测试手段,总的来说,围绕如下几个问题来分来展开,即测试的五要素。

  • 谁来测? 即测试人员;比如是用户测试还是α、β测试?
  •  测什么? 测试什么?需要覆盖哪些内容,比如功能、性能等。
  •  为什么测?测试的原因。基于什么风险来做测试?比如,测试极值错误
  •  如何测?测试人员如何测试。
  •  如何度量测试结果?
  • 如何判断测试通过还是不通过?

 总体总结来看,有如下几种根据不同侧重点进行的分类方式。但是,在具体实践中,还是需要根据不同产品的特点来考虑。

 

2016-08-07 21:56:41 u014726114 阅读数 1389
  • 2019年C语言基础教程【源码,笔记软件,案例】

    C语言概述 什么是C语言 一提到语言这个词语,自然会想到的是像英语、汉语等这样的自然语言,因为它是人和人交换信息不可缺少的工具。 而今天计算机遍布了我们生活的每一个角落,除了人和人的相互交流之外,我们必须和计算机角落。

    10623 人正在学习 去看看 传智

写在前面的话:《软件检测》这本书今天刚刚看完,个人感觉这本书是在介绍一些基本的软件测试的测试方法,同时介绍软件开发的完整流程及软件测试这个职业到底是什么样子的。在介绍这些测试方法的时候主要关注的是这些测试方法的使用流程和使用得注意点,比较偏重介绍的感觉,看完只能说对这些方法策略只能了解大概,个人感觉这本书很适合入门,了解软件测试的基本的知识,要想成为一个软件开发工程师还是远远不够的。

下面我是准备利用思维导图的方式整理我在这本书中学到的东西,还未整理。

Google软件测试之道

博文 来自: yyw794
没有更多推荐了,返回首页