软件测试2小时入门(未完待续)

一、软件测试概述

1、什么是软件测试?

一种观点:为发现错误而执行程序的过程

另一种观点:评价程序或系统属性为目的的活动,是对软件质量的度量。

什么是软件缺陷:

1)软件未实现规格说明书中的功能

2)功能出现了不应有的错误

3)软件功能超出规格说明书范围

4)软件未达到应达到的目标

5)软件难以理解,不易使用、运行速度缓慢

2、测试的对象:程序、文件、数据

3、测试的过程模型

V模型(较常用):

单元测试:测试详细设计中的功能是否全部实现

集成测试:测试概要设计中的功能是否全部实现

系统测试:测试需求分析中的功能是否全部实现

验收测试:测试用户需求是否全部实现

其中,单元测试和集成测试一般公司不会采用。

该模型的缺陷:

1)周期较长:开发阶段和测试阶段是顺序进行的,没有进行并行工作,导致周期比较长;

2)问题发现较迟:比如在系统测试的时候发现有个需求是错误的,那么按V模型的话就要重新修订需求文档——概要设计——详细设计——编码——单元测试——集成测试——系统测试,这样一连串的工作下来可能时间就来不及了。

W模型(较常用)

黄色箭头表示开发,绿色箭头表示测试,两者并行进行。需求分析文档整理好后就进行系统测试用例设计,概要设计好后就进行集成测试用例设计,详细设计好后就进行单元测试用例设计,编码好后集成运用前面设计好的集成测试用例进行集成测试,然后编码实施时运用前面设计好的系统测试用例进行系统测试,最后验收交付。

该模型的优点:

1)将部分测试工作提前进行,缩短了整个项目的周期

2)一些问题在测试用例设计阶段可以提早发现,为解决问题争取更多的时间

X模型

H模型

4、测试的生命周期

测试计划:明确测试的范围(哪些功能需要测试,哪些功能不需要测试)、明确测试策略(采用哪些用例的测试方法进行测试、怎么算通过怎么算不通过)、明确人员进度安排

测试分析:了解需求文档、了解各个模块的功能,哪些功能需要哪些用例来测试,进行构思

测试设计(技术含量较高,工作量比较大):采用用例设计技术进行用例设计(例如黑盒测试:等价类、边界值、因果图法、决策树等)

测试执行:执行测试用例,提交缺陷,反馈给开发进行修改

测试评估:对测试活动进行总结,对软件系统质量进行评估

注意:单元测试、集成测试、系统测试分别会产生相应的测试计划文档、测试用例文档、测试缺陷报告文档、测试报告文档

5、测试的方法

静态分析:不需要执行软件

动态测试:需要执行软件

黑盒测试(又名功能测试、数据驱动测试):顾名思义,就像是用一个黑色的盒子将程序代码盖住,我们不关心程序内部结构,只需要知道输入什么样的值(IN)得到什么样的结果(OUT)

白盒测试(又名结构测试、逻辑驱动测试):需要了解程序内部的逻辑机构

灰盒测试:黑盒测试和白盒测试的结合,即需要了解程序的内部逻辑结构,又需要输入输出值

单元测试:通常在代码完成之后进行,主要是测试函数的功能是否正确实现

集成测试:通常在单元测试之后,各个模块代码完成后集成在一起时进行,主要测试各个模块之间的调用、接口参数之间的传递是否正确

系统测试:集成测试之后进行,主要验证需求规格是否被正确实现

验收测试:用户能否接受软件系统

回归测试:开发人员将缺陷修改好提交后,需要测试该功能是否正确实现以及是否影响到其他功能引起新的缺陷

冒烟测试:程序开发完成后,如基本功能都不能实现(就像一通电电路板就冒烟了),那么我们就将测试申请驳回。因为基本功能都未实现的情况下,测试效率是很低下或无效的,浪费测试资源。

α测试(用户在开发环境下进行系统操作):当测试人员测试好后,邀请一些用户在开发环境下进行系统操作,看是否有问题

β测试(用户在用户环境下进行系统操作):软件测好后发布了一个β测试版本,用户在本地安装后进行操作,看是否有问题。一些大的软件公司会发布β版本,比如腾讯的QQ的β版本

6、测试的基本原则

尽早的和不断的进行软件测试(尽早的发现问题,以保证修改问题的代价是最小的,这就是V模型发展成W模型的原因)

应避免测试自己的程序

pareto原则(80/20原则)(80%的缺陷是在20%的模块中发现的,当测试时发现某个模块问题比较多的时候要增加人手进行充分测试以发现更多的缺陷)

测试用例由输入和预期的输出结果组成(要根据预期的输出结果来判断测试用例是否通过,所以输入和预期的输出结果必须成对存在)

程序修改后要回归测试

穷举测试是不可能的

二、黑盒测试技术

1、黑盒测试概述

什么是黑盒测试技术:不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用例。

测试步骤:同上面测试的生命周期

为什么要设计测试用例:

1)良好的测试用例可以缩短实施测试的时间(测试准备工作是跟开发并行的,只有测试执行的时间是单独进行的,从整体上缩短了项目周期)

2)确保测试的系统性、全面性

3)提高测试的可复用性(如有测试人员变动,交接人员会根据测试用例很快熟悉系统,减少对人员的依赖)

2、黑盒测试用例设计方法

等价类划分法:把程序所有可能输入的数据划分为若干子集,每一子集的代表性数据在测试中的作用等价于这一子集的其他值,每一个子集就是一个等价类。等价类需要考虑有效等价类和无效等价类

设计步骤:1)划分等价类     2)确定测试用例

 边界值法:长期测试经验表明,大量错误发生在输入和输出范围的边界上,而不是发生在输入输出范围的内部。因此,对各种边界设计测试用例,能取得良好的效果。

将边界值测试用例补充到上面等价类划分法中:

判定表驱动法:是分析和表达较为复杂逻辑条件下软件状态和行为的有效工具。用它可以设计出完成的测试用例集合,将复杂问题的各种可能情况罗列出,是测试内容变得简单明了而避免遗漏。

判定表设计步骤:

1)确定规则的个数,条件数为n,规则个数=2n

2)列出所有的条件桩和动作桩

3)填入条件项

4)填入动作项

5)简化判定表,合并相似规则

列出所有的条件桩和动作桩:

进行简化合并后:

"—"处无论是Y或N对输出结果都没有影响。

因果图法

设计步骤:

1)从程序规格说明中找出因(条件项)和果(结果项),并分析因果关系,以及因因、果果之间的约束关系,绘制因果图

2)通过因果图转为判定表

3)将判定表中不符合约束条件的规则去除

4)然后将判定表简化,将每一规则简化为一个测试用例

该例的因果图:

注:该例中不存在条件约束,如果在实际工作中遇到有条件约束的,要用上面的条件约束的符号将其标出来。

 将因果图转化为判定表:

三、白盒测试技术

四、自动化测试

五、软件测试经验谈

原文地址:https://www.cnblogs.com/nietzsche2019/p/10864725.html

时间: 2024-07-31 17:13:28

软件测试2小时入门(未完待续)的相关文章

NOIP2016 那些我所追求的 [未完待续]

人生第一场正式OI [Day -1] 2016-11-17 期中考试无心插柳柳成荫,考了全市第2班里第1(还不是因为只复习了不到两天考试),马上请了一个周的假准备NOIP(数学生物还是回去上课的) 灰哥跟我一块,tlq考吃了没请假 正好下个周老班出去学习了不害怕 星期4所有人都请假了,漫无目的地复习了一天题,参考题解补了一场模拟赛 晚上灰哥因为住宿直接回家了,还让我给XXX送纸条 SD NOIP的群好多人直播,我们就直播了个国际象棋(竟然有人说八皇后,我只升变了两个兵称为皇后),然而竟然默认开启

[译]App Framework 2.1 (1)之 Quickstart (未完待续)

最近有移动App项目,选择了 Hybrid 的框架Cordova  和  App Framework 框架开发. 本来应该从配置循序渐进开始写的,但由于上班时间太忙,这段时间抽不出空来,只能根据心情和兴趣,想到哪写到哪,前面的部分以后慢慢补上. App Framework 前生是是叫 jqMobi 注意大家不要和 jQuery Mobile 混淆了,它们是两个不同的框架,一开始我还真混淆了0.01秒. 这里我先翻译一下Quickstart 部分,一是自己工作上用的上,二是也想顺便练练英文,最关键

[daily][optimize] 去吃面 (python类型转换函数引申的性能优化)(未完待续)

前天,20161012,到望京面试.第四个职位,终于进了二面.好么,结果人力安排完了面试时间竟然没有通知我,也没有收到短信邀请.如果没有短信邀请门口的保安大哥是不让我进去大厦的.然后,我在11号接到了面试官直接打来的电话,问我为啥还没到,我说没人通知我我不知道呀.结果我就直接被他邀请去以访客的身份参加面试了.不知道人力的姑娘是不是认识我,且和我有仇,终于可以报复了... 然后,我终于如约到了,面试官带着我去前台登记.前台的妹子更萌...认为我是面试官,面试官是才是来面试的.我气质真的那么合吗?

关于DOM的一些总结(未完待续......)

DOM 实例1:购物车实例(数量,小计和总计的变化) 这里主要是如何获取页面元素的节点: document.getElementById("...") cocument.querySelector("选择器"); 通过所需的元素节点,得到我们想要的数据做运算. 实例2:伸缩二级菜单 这里主要是逻辑判断,不同的逻辑给不同的className来控制样式. 需求是:一级菜单可以都关闭,但最多只有一个能打开.(思路是,每次都将所有的一级菜单关闭,然后仅打开当前点击的元素,并

我的Java问题集(1)(重点、难点、疑点)未完待续...

学习Java这么久了,总算也了点笔记,一个一个字码的哟! 1.Java中的int等类型变量既然已经有默认值为0,为什么还会出现没有初始化,编译出错呢? 一个变量作为类成员使用的时候,如果没有被初始化,java会为其分配默认值: Boolean false Char '\u0000'(null) byte (byte)0 short (short)0 int 0 long 0L float 0.0f double 0.0d 如果在一个方法中定义一个变量,java不会给其分配默认值,就必须我们来给他

【learning】微信跳一跳辅助c++实现 轻松上万 【未完待续】

写在前面 17年年底Wechat出了这个跳一跳的小游戏,今年2月份的时候简单地玩了一下,发现被游戏虐了(手太残了只能跳20多).     今天刚好有点空,于是就花了一个下午的时间写了一个跳一跳的c++辅助. 由于本OIER既不会Python,也不会安卓的USB调试,更不会单片机,故写了一一个操作安卓模拟器的辅助. 先放下效果:(只是先截个图而已,截止至目前跳了2150次,运行1小时55分钟)[未完待续] 据之前的跳一跳大赛的结果,尽管人类的第一为1.2W分,但仍然被本辅助轻松碾在地上. ----

whatweb.rb 未完待续

#!/usr/bin/env ruby #表示ruby的执行环境 =begin # ruby中用=begin来表示注释的开始 .$$$ $. .$$$ $. $$$$ $$. .$$$ $$$ .$$$$$$. .$$$$$$$$$$. $$$$ $$. .$$$$$$$. .$$$$$$. $ $$ $$$ $ $$ $$$ $ $$$$$$. $$$$$ $$$$$$ $ $$ $$$ $ $$ $$ $ $$$$$$. $ `$ $$$ $ `$ $$$ $ `$ $$$ $$' $ `$

把握linux内核设计思想系列(未完待续......)

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 把握linux内核设计思想(一):系统调用 把握linux内核设计思想(二):硬中断及中断处理 把握linux内核设计思想(三):下半部机制之软中断 把握linux内核设计思想(四):下半部机制之tasklet 把握linux内核设计思想(五):下半部机制之工作队列及几种机制的选择 把握linux内核设计思想(六):内核时钟中断 把握linux内核设计思想(七):内核定时器和

数据结构与算法之--高级排序:shell排序和快速排序【未完待续】

高级排序比简单排序要快的多,简单排序的时间复杂度是O(N^2),希尔(shell)排序的是O(N*(logN)^2),而快速排序是O(N*logN). 说明:下面以int数组的从小到大排序为例. 希尔(shell)排序 希尔排序是基于插入排序的,首先回顾一下插入排序,假设插入是从左向右执行的,待插入元素的左边是有序的,且假如待插入元素比左边的都小,就需要挪动左边的所有元素,如下图所示: ==> 图1和图2:插入右边的temp柱需要outer标记位左边的五个柱子都向右挪动 如图3所示,相比插入排序

git个人使用总结 —— idea命令行、撤销commit (未完待续)

近期在使用git,最开始在idea界面操作,后来要求用命令行.刚开始还不是很习惯,感觉很麻烦,用了几天后感觉爽极了! 其实git的命令也不是很多,熟悉一段时间就差不多能顺利使用了.使用过程中遇到了各种各样的问题,有些小问题就在这里集中总结一下. 1.idea命令行.git安装后就自带终端git bash,使用起来很方便.但是用idea开发,开发后还要在相应文件夹下打开git bash很麻烦.其实idea也带有终端terminal,在最下方可以找到,在这里就可以执行命令.但是如果是默认方式安装的g