搭错车的小火柴

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

在慕课网(慕课网-城下秋草)看的课程,顺手做了笔记放上来。

课程链接:http://www.imooc.com/learn/700

 

一、软件测试概要

1.1软件测试的定义

  使用人工或自动的手段来运行或者测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。

1.2软件测试对象

  存在于软件开发周期,测试对象包括软件需求->软件概要设计->软件详细设计->软件运行环境->可运行程序->软件源代码.

 

1.3软件测试的要素和目标

质量:核心要素

人员:决定因素

技术:包括软件测试技术、软件测试方法、工具,技术是手段

流程:测试计划、测试用例、测试执行、报告,每个阶段的规范性的标准

资源:测试所需环境、硬件、网络环境、测试数据、测试周期时间等

 

1.4软件测试遵循的原则

  1、测试显示缺陷的存在,但不能证明没有缺陷

  2、穷尽测试是不可能的,应设定及时终止的条件

  3、测试应尽早进行

  4、缺陷具备群集特性

  5、测试的杀虫剂悖论,不定期增删修改测试用例,从而发现软件缺陷

  6、测试的二八原则,80%的时间和资源用在20%的重点模块上

  7、测试活动依赖于测试背景,针对不同的测试背景,测试活动场景要求也是不一样的,比如对电信大并发量性能、金融的   安全要求等

 

二、软件测试的分类

2.1、按阶段划分

2.1.1单元测试

对软件中的最小可测试单元进行检查和验证,如C的函数、java的对象、某个菜单或者插件。

      注意:应尽可能保持各个测试用例相互独立。

         一般又开发人员实施,用以检验所开发的代码功能是否符合需求。

      测试框架: 

 

     实例:使用java的测试框架    

     过程:myeclipse->new java project,创建完之后,将Junit的库导入到工程,

       右键->properties->java build path->add library->

       Junit->next->Junit4.

 

       加入要才测试的代码,JunitTest.java->右键->

 

       项目自动生成程序测试的基本框架;

 

2.1.2集成测试:

在单元测试的基础上,将所有软件单元按照概要设计规格说明的要求组装成模块、子系统或者系统的过程中各部分工作是否达到或实现相应技术指标以及要求的活动。偏于从技术角度进行测试

实施方案1、big bang:组装好之后一起测试

    2、自顶向下,从主程序开始,沿控制层,逐层向下,覆盖所有模块。

    3、自底向上,从程序最底层模块开始,逐层向上组装并测试。能较好锁定软件故障位置。瀑布模型开发最常用

    4、核心系统集成,先测试核心部分。

    5、高频集成,隔一段时间就集成测试。

集成测试VS单元测试:1、测试对象,单元测试针对软件最小基本单元,集成测试针对模块或子系统之间的接口关系。

           2、测试依据,单元测试针对软件的详细设计,集成测试针对软件的概要设计。

           3、测试方法,单元测试只关心单元内部,集成测试关注模块之间接口的集成。

2.1.3系统测试

将各子系统结合起来,包括功能测试、性能测试、稳定性测试等。注重整个系统完整的功能和性能,偏于从业务角度测试系统。

2.1.4验收测试

交付测试。分为用户验收测试、运行验收测试、合同和规范验收测试、alpha测试(开发者提供环境,用户测试)、Beta测试(脱离开发者的纯用户测试)、release版本(终版)。

2.2、软件测试手段

按照对象可见度:黑盒测试、白盒测试

按照状态:静态测试、动态测试

按照测试执行方法:手工测试、自动化测试

2.2.1黑盒测试:

  • 功能:不考虑程序内部结构特性和逻辑,程序是否能接受输入并且正常输出,一般针对于软件可简单功能,从用户的角度用过输出结果进行判断。
  • 优点:1、容易实施

              2、贴近用户使用角度

  • 缺点:1、测试覆盖率低,一般覆盖代码不到40%

            2、 针对黑盒的自动化测试,复用率较低,维护成本高

  • 黑盒测试目标:1、是否有不正确或者未实现功能

                                          2、系统是否能正确输入并输出

                                         3、数据结构错误或外部文件访问错误

                                        4、性能是否满足要求(系统测试阶段多用黑盒测试)

  • 主要设计方法:

 

2.2.2白盒测试

  • 功能:结构化测试,针对程序的逻辑结构进行测试。主要逻辑单位包括:语句、条件、条件组合、分支、路径。
  • 优点:1、需要对系统有深入的了解

            2、可监测代码中的每条分支和路径

            3、揭示隐藏在代码中的错误

           4、对代码测试比较彻底

  • 缺点:1、昂贵,较高的覆盖率带来了较大的工作量

            2、无法检测代码中遗漏的路径和数据敏感性错误

            3、不能直接眼中需求的正确性

  • 测试目标:
  • 主要测试方法:

 

2.2.3灰盒测试

2.2.4静态测试

无须执行程序,通过评审软件文档代码,度量程序静态复杂度,检查软件质量。

  • 方式:互相审查、走查、会议

2.2.5动态测试

运行被测试程序,检查运行结果与预期结果的差异,分析运行效率、正确性和健壮性等。

2.2.6手工测试

专门的测试人员从用户角度验证软件是否满足要求

  • 方法:众包测试、探索式测试

2.2.7自动化测试

使用测试工具软件控制测试。

 

2.3软件测试模式

2.3.1传统的瀑布模型

 

2.3.2V模型

 

 

2.3.3W模型

 

2.3.4X模型

 

2.3.5H模型

 

 

2.3.6 敏捷测试

 

2.3.7基于脚本的测试

  • Script-based Testing
  • Scripted Testing(ST)
  • Exploratory Testing(ET):探索式测试,完全抛开测试脚本的测试,和ST互补,适用于敏捷项目

 

 

2.3.8基于风险的测试risk-based testing

2.3.8基于模型的测试-MBT

三、软件测试的分类

 

3.1功能测试

针对功能错误和遗漏、界面问题、性能错误、数据及访问错误、初始化以及终止错误等。

 

3..2性能测试

 

静态性能评估

应用性能管理(APM)

3.3安全测试

测试软件是否符合产品安全标准和质量检测

  • 渗透测试:通过模拟对软件系统的恶意攻击行为来评估系统安全性的一种测试,是受到用户同意的一种黑客攻击,着重点在于攻破系统以发现问题。挑薄弱点下手。
  • 安全测试,着重点在于防御。
  • 安全测试典型案例:OWASP=open web application security project
  • 安全测试工具:appscan(web应用漏洞扫描工具)、webinspect(web应用漏洞扫描工具)、nessus(服务器主机类漏洞扫描工具)、nmap(端口嗅探工具)、metasploit(攻击框架,进行渗透测试)、webscarab(基于代理劫持的分析)、fortify(白盒测试工具,源代码静态分析工具)、w3af(google基于web应用)。

3.4兼容性测试

测试类别:软件本身的兼容性、不同平台下的兼容性、软件对运行设备的兼容性(pc、phone、电视……)、软件互操作性(同一设备上个软件之间的交互性)、浏览器内核兼容性(针对于web应用)

 

3.5文档测试

如用户手册、使用说明、用户帮助文档等

  • 关注要点:完整性、一致性、正确性、易理解性(如大量使用缩写等难懂的词语)、易浏览性。

3.6可靠性测试

软件可靠性、硬件可靠性

3.7易用性测试

3.8本地化测试

语言书写习惯、时区、货币、日期格式、当地风俗、法律法规、政治敏感内容等

3.9部署测试(安装测试)

验证系统部署过程,保证软件安装后可以正常使用。

  • 测试内容:不同环境下测试部署、参照部署文档并处理异常情况、基础数据

3.10无障碍测试(可访问性测试)

便于特殊人群(视障、听障等)使用的功能测试。

四、软件测试的分类

  • 回归测试
  • monkey测试(搞怪测试),如安卓SDK中的moneky测试。
  • 冒烟测试,硬件的冒烟
  • A/B测试,多个方案,通过测试决定最终版。比如app的主页颜色等,优胜劣汰。
posted on 2016-10-21 14:45  搭错车的小火柴  阅读(241)  评论(1编辑  收藏  举报