测试心得

开发阶段暂告一段落,那么开发结束以后需要做什么呢?

上线?推广?

No! 我们还需要一个测试的阶段。通过完整详尽的功能测试来确认我们的产品是否真的满足上线的要求。

 

首先了解一下软件测试、他有什么目的或是意义?

IEEE对软件测试的定义为使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验他是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是在一个可控的环境中分析或执行程序的过程,其根本目的是尽可能少的时间和人力发现并改正软件中潜在的各种故障及缺陷,提高软件的质量。

软件开发过程是软件工程的重要内容,也是进行软件测试的基础。软件测试是贯穿软件开发的整个生命周期。测试在开发各阶段的设计中都有作用,以检查本阶段的工作成果是否接近预期的目标,尽可能早地发现并改正错误。

 

因为还没有具体学习软件测试,所以这次的测试我就做了较为简单的功能测试和压力测试。

首先是功能测试:测试系统的全部功能是否可以正常运作,若不按正规流程操作是否会出现不可测的情况,这种突发情况危害性大吗?需不需要很迫切的修复?

功能测试的话,我采用了手动测试的方法,人工操作各种操作,采用了两种流程来测试,一种是按照我们预设的流程去操作,检查是否有bug。而另一种是我随意的去发挥,不按照预设流程操作,甚至是完全相反的操作来操作,这里就发现了比较多的问题,因为未按照预设流程进行,所以会有很多逻辑问题,比如说我没有选中一个对象,但是就可以点击修改按钮进行修改操作。等等一系列问题,漏洞或是缺陷的发现率还是蛮高的。

 

然后因为我的项目是web项目,所以又对网站进行了压力测试,来测试网站的访问情况。

这里可以推荐两个网址,首先是 https://loadimpact.com/ 可以测试50多个国家/地区访问网站的情况

然后是 https://www.webpagetest.org/ 可以用来测试网站各个模块的响应速度。

 

因为当前知识量储备不够,加之时间紧张,所以测试也做的很简单。

 

那么完整的测试流程应该怎么去做呢?这里我也简单去学习了解了一下,分享给大家

 

1.产品质量的标准

功能:与一组功能及其指定性质有关的一组属性,这里的功能是满足明确或隐含的需求的那些功能。

可用性:安装简便,易使用,界面友好

可靠性:在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性。

性能:指定条件下,软件对操作的响应速度以及实现某种功能所需的计算机资源(包括内存大小,CPU占用时间)的有效程度。

容量:系统的接受力、容纳或吸收的能力,如Web系统能承受多少并发用户同时访问,网络会议系统可以承受的与会人数等。

可测量性:系统某些特性可以通过一些量化的数据指标描述其当前状态或设定状态

可维护性:软件投入运行后,需求发生变化、环境改变或软件发生错误时,进行相应修改所做努力的程度。

兼容性:软件从一个环境移植到另一个环境的容易程度,或与外部条件共同工作的容易程度。

可扩展性:将来增加新功能、扩充系统能力的难易程度。

 

2.软件测试分类

按测试对象分类:单元测试,接口测试,系统测试,数据测试,界面测试,文档测试

按测试目的分类:功能测试,压力测试,性能测试,可靠性测试,灾难恢复性测试,安全性测试,兼容性测试,回归测试,安装测试

根据测试过程中是否执行被测软件:静态测试,动态测试

根据测试人员是否参与被测试对象的运行:主动测试,被动测试

根据是否针对系统的内部结构和具体实现算法来完成测试:白盒测试,黑盒测试

根据测试是否由软件工具完成:手工测试,自动化测试

3.静态测试和动态测试

静态测试执行方法是对软件产品的需求和设计规格说明书的评审、对程序代码的复审以及静态分析等(轮查、走查、互审、审查会议)。

动态测试是通过真正运行程序发现错误,通过观察代码运行过程,来获取系统信息,对系统行为进行验证。

 

4.主动测试和被动测试

主动测试方法:测试人员主动向被测试对象发送请求、或借助数据、事件驱动被测试对象的行为,从而验证被测试对象的反应或输出结果
被动测试方法:测试人员不干预产品的运行,而是被动地监控产品在实际环境中运行,通过一定的被动机制来获得系统运行的数据,包括输入、输出数据.

 

5.白盒测试和黑盒测试

1)白盒测试:(结构、逻辑驱动)

已知产品的内部工作过程,清楚最终生成软件产品的计算机程序结构及其语句,按照程序内部的结构测试程序内部的变量状态、逻辑结构、运行路径等,检验程序中的每条通路是否都能按照要求正确工作,检查程序内部动作或运行是否符合设计规格要求,所有内部成分是否按规定运行。

基本原则

执行测试时,先考虑各个分支被覆盖;
再考虑所有逻辑条件分别为真值和假值的测试;

如果有更高的质量要求,测试对象流程途中所有独立路径至少被运行一次

检查内部数据结构,注意上下文的影响,以确保测试有效性

2)黑盒测试:(功能、数据驱动)

测试时,把程序看做一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试人员针对软件直接进行测试。

能发现以下缺陷

有错误的功能或遗漏了某项功能;
不能正确地接收和输入数据,输出错误的结果;

功能操作逻辑不合理,不够方便

界面出错、不美观

安装步骤不清晰,不够灵活

系统初始化问题等

 

 

6.软件测试级别

 

a).单元测试

针对程序系统中的最小单元—类、函数、模块或组件进行测试,一般和编码同步进行。主要采用白盒测试方法,从程序的内部结构出发设计测试用例,检查程序模块或组件的已实现的功能与定义的功能是否一致、以及编码中是否存在错误。
b).集成测试
也称组装测试、联合测试,在单元测试的基础上,将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的模块之间问题。

两种集成方式:一次性集成方式和渐增式集成方式。

c).系统非功能性测试
将软件放在整个计算机环境下,包括软硬件平台、某些支持软件、数据和人员等,在实际运行环境或模拟环境下进行一系列的测试,包括:负载测试、性能测试、灾难恢复性测试、强度测试

d).Alpha测试 

指软件开发公司内部人员开始试用新产品,在实际运行环境和真实应用过程中发现测试阶段所没有发现的缺陷。

e).Beta测试 
是指公司外部的典型用户试用,并要求用户报告异常情况、提出批评意见,然后再对Beta版本进行修正和完善,最终得到正式发布的版本。 

 

 

测试工作流程