软件测试导论

纵饮孤独 提交于 2019-11-30 03:37:06

                                       软件测试基础

需要学习的内容

了解软件生命周期

了解什么是软件测试

了解软件测试的目的

了解缺陷

研发组织和流程

1、什么是软件测试?

    测试软件的bug;提升软件质量;验证软件的正确性;测试软件是否符合需求;测试软件是否符合客户隐形需求。

      软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误的衡量软件质量,并对其是否满足设计要求进行评估的过程

 

2、软件测试的目的

        1、找到软件的bug

        2、证明软件可用

        3、预防bug

测试的目的体现3个阶段

项目早期:开发对项目还不够熟悉,测试主要找致命或严重的bug

项目中期:整个项目比较稳定,测试证明软件是否可用

项目末期:软件的质量基本OK,可通过外部测试或者bug大少出找遗漏的bug

 

以下是软件生命周期

1,项目计划

  项目计划是由谁来写的?项目经理(PM)

  项目计划什么时候写的?项目启动之前写

  项目计划里面包含的主要内容:who人员(做项目由哪些人)  when时间(什么时间段做什么事情) what什么事情(做研发这个项目我们要做哪些事情)

2/需求分析

  需求分析师由需求分析师来分析,需要分析客户具体想要的软件功能.界面以及不想要的比如错误处理等等

3/设计

  设计是由系统架构是来设计的,需要输出需求规格说明书(SRS),概要说明书(HLD)

4/编码

  编码是由谁来编的?开发工程师,要输出详细设计说明书(LLD),要写代码完成功能的实现,界面的开发等等

5/测试

  测试由谁来测试?测试工程师,要执行测试检查实际结果和预期结果一致,检查需求或者设计是否由遗漏

6/维护

  维护由谁来维护?技术支持工程师/维护工程师,需要做的事情,剥壳解决用户问题(bug),新增加需求,运维统计数据

 

缺陷

缺陷不仅仅指功能有问题,还要考虑许多问题

缺陷相关术语

错误:人为主观问题

缺陷‘:按正常操作了,但是结果返回的是错误

故障:当一个缺陷被激活,便产生了缺陷,比如闪退,崩溃,都属于缺陷

失效:故障不能很好的处理就可能导致失效

 

研发部门:

开发部(包含人员):需求分析师、系统架构师、设计人员(界面UI设计、美工、数据结构)、编码人员(开发)。

测试部(包含人员):测试工程师、测试开发工程师、QC质量管控(一般是由测试人员兼职)

质量部(包含人员):QA质量保证、CMO配置管理员

QA会监控:

1、监督输出成果物(文档、代码、帮助说明)等

2、各阶段任务完成的及时性

3、各种工作的规范性

CMO配置管理员:

1、管理配置库,所有的成果物存放的地方叫配置库

 

   研发流程

1/瀑布模型:

  优点:流程比较稳定/简单/清晰,整个研发的流程参考软件生命周期

  缺点:测试接入太晚,没有办法预防bug

  客户相对较晚才能看到软件系统

  从开发的角度看,也希望尽快能跟客户确认软件是否符合客户需求的

2/螺旋模型:

  把需求分阶段实现,每个阶段都遵循软件生命周期,每个阶段都由风险分析,避免分线

3/双V模型

  (1)开发工作和测试工作是并行的

  ()测试设计顺序和测试执行顺序是相对的

   ()测试设计和测试执行时分离的,先设计,在执行

    设计顺序:ST(系统测试)--->IT(集成测试)---> UT(单元测试)

    执行顺序:UT(单元测试)--->IT(集成测试)--->ST(系统测试)

 

瀑布模型适合的项目,时间周期相对较短,需求编号不频繁的

螺旋模型适合的项目,时间不算长也不算短的,运行寻求有一点的变化

双V模型适合的项目,大型项目,时间周期相对较长,运行需求频繁变化

 

                                                          测试过程

 理解软件测试的4个阶段和4个活动

1/单元测试

  单元测试是指:正对代码最小单元进行的测试,最小单元类似函数或者类,参考LLD。

关注的是内部逻辑和函数功能

2/集成测试

  继承测试是指内部模块与模块之间的接口,参考的文档时HLD,关注的测试内容一个是集成后的功能,第二个关注的是内部接口,(主要使用灰盒测试方法)

3/系统测试

  系统测试是指:将所有模块集成成一个完整的系统,以完整的系统功能来进行测试,参考的稳定时SRS,关注的内容是需求中的所有特性是否实现,使用黑盒测试

4/验收测试

  验收测试分为两种测试:正式验收和非正式验收,使用的是黑盒测试方法。

  阿尔法测试:内部人员进行验收,内部人员包括:开发/测试/OA/项目经理或者特邀的客户。

  测试环境:在受控的环境下,受控的意见在开发的电脑上进行测试

  测试过程中:当有问题或者疑问的时候,开发可以立即定位和解答

   贝塔测试:

  在外部的人员进行验收,外部人员包括:客户亲自参与验收,实际的用户。

  测试环境:在不受控的环境,不受控的环境下(在公网,inter网上)。

  测试过程中:当有问题或者疑问的时候,没有开发人员可以立即定位和解答。

 

阿尔法测试和贝塔测试的区别:

  1/阿尔法测试时在受控的环境下,由内部人员进行测试,并且发现问题理解得到解决

  2/贝塔测试时在不受控的环境下,由外部人员进行测试,发现问题不能立即得到解决

  

单元测试针对软件系统的最小单元进行测试

集成测试考虑模块与模块之间的接口测试

系统测试,从需求的角度考虑每个需求都是否实现兵正确,还要考虑非功能系统指标比如:性能测试,可靠性能指标、安全、兼容、安装、升级,和用户使用手册等等。

验收测试主要让内部客户和外部客户对软件验收进行的一个测试

 

单元测试/集成测试/系统测试之间的关系:

1.从测试的深入系统的层次来讲:

最底层就是单元测试:

中间层的就是集成测试:

最上层的就是系统测试。

 

2.从测试难度和范围来讲:

1.单元测试最简单,也是范围最小的。

2.集成其次。

3.系统测试是最复杂,也是范围最大的。

 

回归测试:

1、验收开发是否吧bug修复的过程

2、再次验收软件已有的功能和旧的用来,是否引入新的缺陷

 

回归测试由分为完全回归测试和选择性回归测试

完全回归:在不考虑人力时间成本的情况下选择完全回归,因为质量更高。

选择性回归:时间紧张,回归bug是否修复,以及bug相关的功能,主要业务功能。如果考虑人力时间成本,那么只能选择 选择性回归。

到底是用完全回归还是选择性回归,由测试经理决策。

 

回归测试的选择回归测试,主要表现为三个方法:

 1、覆盖修改发:正对发生错误的模块,选取这个模块的全部测试用例进行测试,只能验证本模块是否还存在缺陷,但不能保持周边与它有关联的模块不会应为这侧改动而引发缺陷。

2、周边影响发:除了吧出错模块的用力执行之外,还要吧与它相关联的模块用来也执行一遍,保证回归测试的质量。

3指标达成法:我们还可以从量化的角度来分析模块的质量,比如金国上面的一系列回归测试后,看看遗留的缺陷率是否以及在允许的范围之内了,那么我们以此为标准可以结束本次回归测试,在测试完成后,看看有没有达到既定的标准

 

测试的4个活动

1、测试计划

  由测试经理来写,测试计划的主要内容:什么测试人员在什么时候测试什么内容,参考SRS

2、测试设计

  有高级测试工程师来写测试方案,主要内容:怎么进行测试,需要使用什么方法,工具等,测试方案文档,参考测试计划、SRS。

3、测试实现

  由普通测试工程师来写测试用例(testcase),需要参考的文档由测试方案、测试计划、SRS

4、测试执行

  1、搭建环境

    测试人员自己搭建测试环境,参考环境搭建说明文档(来源开发)

  2、执行测试用例

    参考测试用例进行执行测试

  3、提交测试日报

    当发现软件bug'后要提交缺陷报告,发现缺陷后立即提交缺陷报告,不要等到第二天或以后在提

  4、提交测试日报、编写项目总结

    测试日报是汇报你当前的工作内容(要有数据),遇到的问题,反馈风险等,方便你的测试经理控制项目进度以及解决问题和风险。项目完成之后测试经理会要求每个测试人员编写项目总结,总结项目里做的号的如何保持,做的不好的如何改进等等

  5、提交测试报告

    测试报告(软件项目的测试报告)测试经理来写的。

    主要内容:多少人测试的、测试时间、发现bug、编写用例、执行的用例、存活的bug,没有修改完的bug,跟开发经理协商过的,需求分析师确认、证明软件可以发布

 

测试方法

了解黑、白、灰测试方法

了解静态、动态测试方法

了解人工、自动化测试方法

从测试方法分类:

黑盒测试方法

  黑盒测试不关注内部的结果,指关注外部的输入盒输出,一般用于系统测试,集成测试,单元测试。

白盒测试方法:

  白盒测试只关注内部的代码结构,不关注外部的输入盒输出,一般用于单元测试。

灰盒测试方法:

  结合白盒测试的方法和黑河测试的方法叫灰盒测试,一般用于集成测试。测试时基于部分外在特性和部分内在信息,部分内部结构和部分外在功能。

 

白盒测试方法:

  语句覆盖

  判定覆盖

  条件覆盖

判定条件覆盖

  条件组合覆盖

  路径覆盖

  

静态测试和动态测试:

1、凡是不运行代码进行的相关测试都叫静态测试:

(1)      对文档进行(SRS、测试计划开发,测试方案,HLD  LLD,用户说明手册,帮助文档等等)

(2)      人工走读代码(检查是否逻辑正确)

(3)      静态检查工具扫描代码(扫描一些代码的安全漏洞,不规范的语法,包括代码注释率)属于自动化静态测试。

  1. 凡是必须要运行代码才能进行的测试都叫动态测试.

 

人工测试适合的范围:

需要智力和创造的工作。

自动化测试适合的范围:

适合简单、重复的工作。

 

自动化测试的优缺点:

1.优点:

1.效率高,成本(更)低,更好的可重复性

2.提升资源的使用率

3.不受时间限制

2.缺点:

1.测试类型单一, 内容不全

2.开发自动化的人员技能要求较高。

3.自动化测试不可能发现新缺陷,由于测试用例设计存在的不足会导致缺陷的遗漏

4.自动化测试不适用于中小型项目(周期短的),对于需求功能频繁变动的版本也是不适用的。

     

 

 

 

 

 

 

 

 

 

 

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!