测试基本理论看这篇就够了

上一篇 / 下一篇  2022-10-19 11:33:55 / 个人分类:测试

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

一、软件的分类?

1、按照功能划分:

【系统软件】:如操作系统数据库管理系统,各种驱动软件等;

【应用软件】:如Office、有道翻译、QQ等;

2、按照技术结构划分:

【单机版本】:如Office,画图工具等;

【C/S结构软件】:如QQ、微信等;

【B/S结构软件】:如新浪、搜狐、google等;

3、按照使用终端划分:

【PC端】:电脑版QQ等安装在电脑端的软件;

【移动端】:如手机版QQ、微信等安装在移动端的软件;

4、按照用户划分:

【产品软件】:Office、财务处理软件、360卫士等;

【项目软件】:如为企业定制的OA系统等;

5、按照开发规模划分:

1.png

二、软件测试的原则?

1、测试的标准都是建立在用户需求之上。测试人员要始终站在用户的角度去看问题、去判断软件缺陷的影响。

2、基于“质量第一”的原则。当时间和质量冲突时,时间要服从质量。

3、事先定义好产品的质量标准。有了质量标准,才能依据测试的结果对产品的质量进行正确的分析和评估。

4、尽早测试。在代码完成之前,测试人员要参与需求分析、系统或程序设计的审查工作,而且要准备测试计划、测试用例、测试脚本和测试环境。

5、穷举测试是不可能的。在测试中不可能运行路径的每一种组合,然而,充分覆盖程序逻辑,并确保程序设计中使用的所有条件是有可能的。

6、程序员应避免测试自己的程序。程序员可能对需求说明书理解有误则无法发现问题,测试是需要带有”挑剔性”的行为。

7、软件测试计划是做好软件测试工作的前提。在进行实际测试之前,应制定切实可行的测试计划并严格执行,特别要确定测试策略和测试目标。

8、测试用例是设计出来的,不是写出来的。需要根据测试的目的,采用相应的方法去设计测试用例,从而提高测试的效率,更多地发现错误,提高程序的可靠性。

9、不可将测试用例置之度外,排除随意性。避免出现漏测或重复测试的情况。

10、对发现错误较多的程序段,应进行更深入的测试。一般来说,一段程序中已发现的错误数越多,其中存在的错误概率也就越大。

三、软件测试的分类?

1、按照测试技术划分

(1)【黑盒测试】:功能测试。黑盒测试是以用户的角度,把被测的软件看作一个不能打开的黑盒子,着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。它只检查程序功能是否按照需求说明正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。【必须进行的】

(2)【白盒测试】:逻辑结构测试,对代码进行测试。主要看代码的逻辑、算法、结构是否正确,要求懂代码,也需要写测试用例。【不一定进行】

(3)【灰盒测试】:是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。

2、按是否进行代码划分

(1)【静态测试】:界面、文档、代码的测试。其中代码测试重点关注代码的规范性,一般检查变量的命名,注释的频率,编程的规范性,不需要写测试用例,一般只需要有代码审查单,与白盒测试是不一样的,经常把白盒测试和静态测试结合到一起,叫做静态白盒测试。

(2)【动态测试】:使程序运行起来,看输出结果,经常与黑盒测试是同步的。

3、按照软件特性进行分类

(1)【功能测试】:是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。

(2)【性能测试】:是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。包括负载测试、压力测试、稳定性测试等。

① 稳定性测试:叫可靠性测试(reliability testing),是指连续运行被测系统检查系统运行时的稳定程度。

② 负载测试(load testing):是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。

③ 压力测试(stress testing):是指持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。

(3)【安全测试】:是指在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程 。

(4)【兼容性测试】:是验证软件和其他软件、平台、系统、硬件等之间的依赖性。

4、按照不同测试手段

(1)【手工测试】

(2)【自动化测试

5、按照测试阶段划分

(1)【单元测试】:指对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类。单元测试通常由开发工程师完成,一般会伴随开发代码一起递交至代码库。单元测试属于最严格的软件测试手段,是最接近代码底层实现的验证手段,可以在软件开发的早期以最小的成本保证局部代码的质量。

(2)【集成测试】:集成测试又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增的测试。重点测试不同模块的接口部分。

(3)【系统测试】:对整个软件系统进行全面完整的测试过程,包括对功能、性能、以及软件所运行的软硬件环境进行测试。

(4)【验收测试】:在系统测试的后期,以用户测试为主或有测试人员等质量保证人员共同参与的测试。

alpha测试:由最终的用户、测试、开发人员等共同参与的内部测试。

beta测试:由最终的用户在实际环境中进行测试,对于一些没有固定用户群体的公共类软件(办公软件,输入法,游戏),一般会发行公测版(beta版),让用户免费使用,发现bug后进行反馈。

6、其他分类

(1)【回归测试】:指对软件的新版本测试时,重复执行上一个版本测试时的用例。

(2)【冒烟测试】:是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测试性。

(3)【随机测试】:是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。

(4)【精准测试】:是指借助一定的技术手段、通过算法的辅助对传统软件测试过程进行可视化、分析以及优化的过程。也就是说,精准测试可以使得测试过程可视、智能、可信和精准。

四、测试用例设计方法?

测试用例(TestCase):是为项目需求而编制的一组测试输入、执行条件以及预测结果,以便测试某个程序是否满足客户需求。可以总结为:每一个测试点的数据设计和步骤设计。

【常见设计方法】:

1、等价类划分;

2、边界值分析法;

3、错误猜测法;

4、场景法;

5、测试大纲法;

6、因果图&判定表法;

7、正交排列法;

8、状态转换法;

具体的用法详见下一篇文章

五、bug的由来?

1、历史上的第一个软件bug?

bug:原意是”臭虫“或”虫子“。1947年9月9日,正当计算机刚刚被发明的时候,哈佛大学的某个计算机实验室正在做实验。由于当时的原始计算机由很多庞大且昂贵的真空管组成,运行时会产生光和热,在下午15点45分的时候,一个飞蛾钻入真空管内,导致整个计算机无法工作。当时这只小虫子从真空管中取出后,计算机又恢复正常。后来,虫子的泛称bug这个名词就沿用下来,而那个被拍死的飞蛾也就成为了历史上发现的第一个bug。

2、千年虫的问题?

在2000年,有一个著名的虫子把业内搅得不可开交,那就是千年虫问题,也叫做2000年问题。“千年虫”是指在某些使用了计算机程序的智能系统(比如一般的计算机系统以及自动控制芯片等)中,由于其中的年份沿用早期的设计,只使用2位十进制数来表示,比如用80代表1980年,因此当系统进行(或者涉及到)跨世纪的日期处理运算(比如计算1980年到2080年之间的日期)时,就会出现错误的结果,从而引发各种各样的系统功能紊乱甚至系统奔溃。

​从千年虫的实际例子中也可以看出,不考虑硬件上的限制,如果当初在设计日期表示格式的时候能够想得更长远一些,就完全可以避免这个虫子的发作,从而节省一大笔修改更新软件等费用(据未经证实的来自美国国际资料公司调查报告表明,光是1995年到1998年,全球捉千年虫的开销就已经达到了惊人的1840亿美元)。

后面的文章中再与你分享关于bug的故事!!

六、测试须知的三个概念?

1、【返测】:开发修复的bug进行验证。

2、【回归】:指对软件的新版本测试时,重复执行上一个版本测试时的用例。

3、【冒烟】:是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测试性。


TAG:

引用 删除 canonind2010   /   2022-11-10 16:29:18
good
 

评分:0

我来说两句

Open Toolbar