zoukankan      html  css  js  c++  java
  • 《软件测试》总结

    《软件测试》Ron Patton著。

    这本书很全面地介绍了软件测试的理论基础知识,也就是看了这本书对软件测试有了一定的了解,帮助我找到了一份关于软件测试的工作。在看这本过程中也有一些有疑问的地方,这里主要是针对自学软件测试以来对软件测试的理解的一点总结,并把自己不懂的地方梳理一遍。

    一、软件测试工程师究竟要做些什么?

    这本书中给到一个相对完整的答案:软件测试员的目标就是尽可能早地找出软件缺陷,并确保其得以修复。

    在面试过程中,面试官曾经告诉过我,并不是为了找bug,而是协助开发人员完善产品。有道理,于是就更加同意一个忘了是在哪里看到的说法:软件测试有以下两个内容。(大概意思是以下)

    1)检验需求分析文档所要求的功能是否完成。

    2)检验产品是否符合最终用户的体验。

    二、软件开发生命周期模式

    4种最常用的模式

    1、大爆炸模式

    简单。几乎没有计划、进度安排和正规开发过程,所有精力都花在开发软件和编写代码上。尽量避免在此模式下进行测试。

    2、边写边改模式

    由于开头机会没有计划和文档编制,项目小组得以尿素展现成果。因此,边写边改模式极其适合意在快速制作并且用完就扔的小项目,例如原型范例和演示程序。

    3、瀑布模式

    强调三点:

    1、瀑布模式非常强调产品定义

    2、瀑布模式各步骤是分立的,没有交叉的。

    3、瀑布模式无法回溯,一旦进入某一个步骤,就要完成该步骤的任务,才能向下继续。

    4、螺旋模式(有点包含以上三种模式)

    螺旋模式的总体思想是一开始不必详细定义所有细节。从小开始,定义重要功能,努力实现这些功能,接收客户反馈,然后进入下一阶段。重复上述过程,直至得到最终产品。

    螺旋模式每一次循环包含6个步骤:1)确定目标、可选方案和限制条件;2)明确并化解风险;3)评估可选方案;4)当前阶段开发和测试;5)计划下一阶段;6)确定进入下一阶段的方法。

    5、有些公司采用的模式:敏捷软件开发,快速原型,极限编程,进化开发等。

    三、测试的方式

    1、黑盒测试(功能性测试)

    2、白盒测试(访问代码,能够查看和审查)

    又可以分:

    1、静态测试 ——测试不运行的部分,即检查和审核

    2、动态测试 ——通常意义上的测试,即使用和运行软件

    于是结合两种就出现了以下测试方式:

    1、静态黑盒测试——测试产品说明书,并在软件编写之前找出问题(找出根本性问题)

    2、动态黑盒测试——不深入代码细节测试软件的方法。

    动态黑盒测试测试用例的方法

    1)等价类划分

    2)边界值分析

    3)数据测试

    4)状态测试

    失败状态测试

    1)竞争条件测试和时序错乱

    2)重复测试——是否存在内存泄露

       压迫测试——尽可能地限制软件的必要条件

       重负测试——尽量提供条件任其发挥

    5)通过性测试和失效性测试

    失效性测试——纯粹为了破坏软件而设计和执行的测试用例

    其他:像笨拙的用户那样做、在已找到软件缺陷的地方再找找、像黑客一样思考问题、凭借经验,直觉和预感。

    3、静态白盒测试——通过正式审查和检验检查代码的细节

    即在不执行软件的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程,有时称为结构化分析

    1)正式审查——进行静态白盒测试的过程。

    确定问题、遵守规则、准备、编写报告4个基本要素。

    (1)同事审查——最简单,要求最低

    (2)走查——比同事审查更正规化的下一步

    (3)检验——最正式的审查类型。表述者不是原来的程序员。

    2)通用代码审查清单

    (1)数据引用错误

    (2)数据声明错误

    (3)计算错误

    (4)比较错误

    (5)控制流程错误

    (6)子程序参数错误

    (7)输入/输出错误

    (8)其他检查

    4、动态白盒测试——利用查看代码功能(做什么)和实现方式(怎么做)得到的信息来确定哪些需要测试、哪些不需要测试、如何开展测试。(也称结构化测试structural  testing

    测试用例方法:

    1)分段测试

    (1)单元测试(模块测试)

    (2)集成测试

    (3)系统测试

    以上三种递增测试有两条路径:自底向上(bottom-up)和自顶向下(top-down

    自底向上测试中要编写测试驱动模块调用正在测试的模块。

    自顶向上测试有点像小规模的大爆炸测试。(编写一小段称为桩Stub的代码充当接口模块。)

    2)数据覆盖

    数据流、次边界、等式和公式、错误强制

    3)代码覆盖

    程序语句和代码行覆盖

    分支覆盖

    条件覆盖

    没有指明动静态时好像通常指的是动态的。

    四、其他测试的技术

    配置测试

    兼容性测试

    外国语言测试

    易用性测试

    文档测试

    软件安全性测试

    网站测试

    五、测试的补充

    自动测试、缺陷轰炸、Beta测试(让他人验证和确认软件的常用过程)

    性能测试、特别测试

    六、测试文档

    测试计划==》测试设计说明==》测试用例说明==》测试过程说明

    一些典型问题:

    1、 问:软件测试主要分哪些阶段?

    答:

    和开发过程相对应,测试过程会依次经历单元测试、集成测试、系统测试、验收测试四个主要阶段。

    单元测试:单元测试是针对软件设计的最小单位––程序模块甚至代码段进行正确性检验的测试工作,通常由开发人员进行。

    集成测试:集成测试是将模块按照设计要求组装起来进行测试,主要目的是发现与接口有关的问题。由于在产品提交到测试部门前,产品开发小组都要进行联合调试,因此在大部分企业中集成测试是由开发人员来完成的。。

    系统测试:系统测试是在集成测试通过后进行的,目的是充分运行系统,验证各子系统是否都能正常工作并完成设计的要求。它主要由测试部门进行,是测试部门最大最重要的一个测试,对产品的质量有重大的影响。

    验收测试:验收测试以需求阶段的《需求规格说明书》为验收标准,测试时要求模拟实际用户的运行环境。对于实际项目可以和客户共同进行,对于产品来说就是最后一次的系统测试。测试内容为对功能模块的全面测试,尤其要进行文档测试。

    2、软件测试工程师所应具备的职业素质

    优秀的测试工程师除了具备“专业技能、行业知识”外,还必须具备相应的交流技巧、组织技能、实践技能和积极态度。除此之外,还应该具备一些基本的个人素养:即专心、细心、耐心、责任心和自信心“五心”

    3、软件测试职业发展方向

     

  • 相关阅读:
    Contains Duplicate III
    Contains Duplicate
    bitmap
    机器人的运动范围
    矩阵中的路径
    不要62
    牛顿迭代法求方程的根
    统计C语言合法字符
    迭代法求平方根
    欧几里德算法(求两个正整数的最大公约数)
  • 原文地址:https://www.cnblogs.com/cailingsunny/p/5134615.html
Copyright © 2011-2022 走看看