浅谈软件测试

一. 什么是软件测试

软件测试是一个过程或者一系列过程, 用来测试计算机代码完成了其应该完成的功能, 不执行不该有的操作.或者说软件测试是根据软件开发各阶段的功能和说明而精心设计的一批测试用例, 并根据测试用例运行程序, 以发现程序错误的过程.

二. 软件测试的心理学和经济学

1.软件测试心理学

测试是为发现错误而执行程序的一个过程.

2.黑盒测试

数据驱动测试或者输入输出驱动的测试, 测试目标与程序的内部结构以及程序的内部机制都无关, 将重点放在程序不按照其规范正确运行的环境条件.

3.白盒测试

逻辑驱动测试, 即允许对程序的内部结构进行检查, 对程序的逻辑结构进行检查, 从中获取测试数据(忽略了程序的规范).知道产品内部结构, 可通过测试检测产品内部是否按照说明书正常工作. 测试方法通常有逻辑驱动, 基路测试等.

4. 软件测试的目的

以最少的人力物力时间找出软件中潜在的各种错误缺陷,通过修正错误缺陷, 提高软件的性能和质量, 避免软件发布后由于潜在的问题引起商业风险

5.需求文档测试

主要测试产品需求中是否存在逻辑矛盾, 以及需求在技术上是否可以实现

6.设计文档测试

测试设计是否符合全部需求以及设计是否合理

三. 软件测试的原则
1.对预期输出或结果的一个定义

只有在测试之前对程序的预期结果做出相应的定义, 才会知道程序是否完成了自己应该完成的功能, 或者程序是否执行了自己不该执行的任务.

2.程序员应该避免测试自己编写的程序

每一个作者都清楚自己所编写的程序需要表达一个什么意思, 但实际表达出来的意思有可能是南辕北辙的, 而自己却没有意识到.

3.编写软件的组织不应该测试自己编写的软件

对于编写者来说, 定量的衡量软件的可靠性较难, 即使合理的规划和测试过程, 可能也会降低完成进度和成本目标.

4.彻底检查每个测试的执行结果

在后序的检查和测试中, 往往发现的错误是前序测试所遗漏的.

5. 测试用例的编写不仅要考虑到有效和预期的输入, 还应该考虑无效且不符合预期结果的输入用例.

在测试的过程中往往将重点放在了有效和符合预期结果的输入中, 而忽略了一些无效和未预料的结果.

6.检查程序是否未做其应该做的仅仅是测试的一半, 还应该检查程序是否做了其不应该做的

必须检查程序是否有我们不希望的副作用

7.避免测试用例用后丢弃, 除非软件本身是一次性的软件

保留测试用例是为了当程序其他部分发生更动后重新执行,

8.计划测试时, 不应该默许假定不会发现错误

所谓测试, 是为了发现错误而执行的一个过程

9.程序某部分存在更多错误的可能性

加入一个程序由模块 A和模块 B构成, 但是模块 A有五个错误, 而模块 B只有一个错误

10.软件测试是一个具有创造性和智力性的工作

测试一个大型软件所需要的创造性很可能超过了开发一个大型软件所需要的创造性和智力性.

四. 几个名词
1. Alpha 测试

有一个用户在开发环境下进行的测试, 也可以由公司内部的用户在模拟实际操作环境下进行的受控测试. 测试不能由测试员或者程序员来完成, 测试过程中如果发现错误, 可以现场立即向开发者反馈, 目的是评价软件的功能, 可靠性, 可使用性, 性能和支持. 尤其注重软件的界面和特色.可以从软件的编码之后进行测试.有关的手册应该在测试之前准备好

2. Bate 测试

软件的多个用户在一个或多个用户的实际使用环境下进行的测试. 开发者往往不在现场, Bate 的测试往往不能由测试员或者程序员来完成, 因此 Bate 测试是不可控的. 在遇到问题时有用户记下, 然后反馈给开发者, 开发者在接到反馈时及时对其作出修改, 最终将产品交给使用用户. Bate 测试往往侧重于产品的支持性, 只有 Alpha 测试达到一定的可靠性的之后才能进行 Bate 测试, 由于 Bate 测试注重于产品的支持性, 因此尽可能让支持产品发行的人员进行管理

3. 驱动模块

驱动模块往往也叫做主程序, 它接受测试数据, 将测试数据传入到北侧单元, 驱动模块主要完成对输入数据进行判断, 将输入数据传送给输出被测模块, 驱动被测模块执行, 接受被测单元执行结果, 对输出结果进行判断, 接受被测单元执行结果, 将执行结果作为用例执行结果输出测试报告

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/384002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UVa10340

【题目描述】 传送门 【题目分析】 求字串&#xff0c;最好还是处理母串&#xff0c;每次找到一个子串就加1&#xff0c;这样处理不用处理细节 【AC代码】 #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include&l…

浅析linux下的条件变量

一.条件变量 条件变量是用来等待线程而不是上锁的&#xff0c;条件变量通常和互斥锁一起使用。条件变量之所以要和互斥锁一起使用&#xff0c;主要是因为互斥锁的一个明显的特点就是它只有两种状态&#xff1a;锁定和非锁定&#xff0c;而条件变量可以通过允许线程阻塞和等待另…

UVa1587

【题目描述】 传送门 【题目分析】 刚开始想简单了&#xff0c;认为只要相对的面相等就可以了。然后发现三个不同方向的面的边应该有相等的关系&#xff0c;即如果两个面公用一条边&#xff0c;那么这两个面的另外两条边就是另一个面的两条边。而且这三个量里面肯定有一个最…

Linux多线程与同步

https://www.cnblogs.com/freedomabcd/p/7774743.html 典型的UNIX系统都支持一个进程创建多个线程(thread)。在Linux进程基础中提到&#xff0c;Linux以进程为单位组织操作&#xff0c;Linux中的线程也都基于进程。尽管实现方式有异于其它的UNIX系统&#xff0c;但Linux的多线程…

内存管理(二)

页面置换算法 当发生缺页中断的时候, 系统会在内存中选择一个页面将其换出内存, 而当换出内存的时候如果该页面的内容在内存中发生修改,则必须将该新数据重新写回到磁盘, 然后再将需要换进的数据覆盖掉原来的数据, 而当该数据在内存中没有被修改的时候, 此时就直接用需要换进的…

两个栈实现一个队列/两个队列实现一个栈

http://blog.csdn.net/sinat_30472685/article/details/70157227 1两个栈实现一个队列 1.原理分析&#xff1a; 队列的主要操作有两个&#xff1a;入队操作和出队操作&#xff0c;出队时从队头出&#xff0c;入队是从队尾插入&#xff0c;入队的操作和入栈的操作类似&#xff0…

UVa1588

【题目描述】 传送门 【题目分析】 刚开始想了一会没有想到什么很好的算法&#xff0c;看到了长度最多为100&#xff0c;就知道自己想的没有什么意义了&#xff0c;直接暴力&#xff0c;把每一种填法都试一下就知道了。适当剪枝一下&#xff08;一个简单的乐观函数&#xff…

转:C++中const、volatile、mutable的用法

const修饰普通变量和指针 const修饰变量&#xff0c;一般有两种写法&#xff1a; const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是&#xff1a;const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE&#xff0c;无论怎么写&…

数据链路

广播信道的数据链路层 局域网的优点 网络为一个单位所拥有, 地理范围和站点数有限 局域网具有广播特性, 可以从一个站点方便地访问到整个网络. 各个主机之间可以共享资源, 无论是局域网上的硬件资源还是局域网上的软件资源 便于系统的扩展换和演化, 各个设备之间的位置可灵…

UVa11809

【题目描述】 传送门 【题目分析】 终于把这道题做完了&#xff0c;之前一直连题意都看不懂。实在不行上网找了一下大佬的博客&#xff0c;看懂题意后自己写&#xff0c;发现读入很难处理&#xff0c;就又学习了一下大佬的读入方法&#xff0c;用的是C里面的sstream&#xf…

数据链路层:基本概念

数据链路层的定义 对数据链路层有对上的网络层接口. 对下提供物理层的接口. 定义合适的传输差错率 对传输流进行管理, 以免快速的传输的数据被淹没. 比如发送端发送信号太快, 接受方接受速度较慢, 此时数据链路层就需要提供一定的功能解决这个问题 物理层上传输的基本单元是…

C++的沉迷与爱恋

每年的 09/28 於我都是一个特殊的日子 -- 不只是因为教师节。今年很特殊地没有普天同庆&#xff0c;那麽我就写篇文章自己庆祝一下好了。我於今年七月发表了一本着作《多型与虚拟》和一本译作《深度探索C物件模型》&#xff0c;获得很大的回响。这些作品都不是针对 C 的完全初学…

Insertion Sort——打表找规律

【题目描述】 Insertion sort is a simple sorting algorithm that builds the final sorted array one item at an iteration.More precisely, insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. At each iteration…

数据链路层: 可靠性传输 六个协议

可靠性传输 1. 差错控制 发送方将数据帧发送, 但是当发送方发送的是一个 1的时候此时接受方却接受的是一个 0. (1)校验 接收方如果帧校验接受到的帧没有问题, 则对发送方发送一个肯定性的确认, 当对这个数据帧进行校验发现这个帧有问题的时候, 此时接受方一种是将这个数据帧…

c语言实现配置文件的读写

配置文件的格式如下&#xff1a; key1 value1 key2 value2 . . . 名值对以一个链接&#xff0c;一条记录以换行符分割 头文件&#xff1a; #include<stdio.h> #include<stdlib.h> #include <string.h> 函数原型&#xff1a; void trim(char *strIn, char *…

Educational Codeforces Round 73 (Rated for Div. 2)

A 很简单的一个模拟&#xff0c;只要前面的数字有两个以上就能合成后面的&#xff0c;我们进行一遍合成看能不能出现2048就可以了。 #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<iostream> #include&…

数据链路层: HDLC

一. 协议机 发送方和接收方. 同时有限状态机把协议形式化为一个四元组 (S,M,I,T), 其中你S表示进程和信道可能进入的集合, M 表示数据帧的状态, I 表示进程的初始状态, T 表示两两状态之间的转化. 每个系统状态可以分为发送状态, 接受状态和信道状态. 把状态用一个点进行表示,…

Miller_Rabin算法

为了测试一个大整数是不是素数&#xff0c;我们不能够使用传统的测试是否有因子的方法&#xff0c;因为那样的时间复杂度至少也是O(n)O(n)O(n)&#xff0c;空间复杂度是O(n)O(n)O(n)&#xff08;使用线性筛数法&#xff09;&#xff0c;时间复杂度还好说&#xff0c;空间复杂度…

bob-tong 字符串函数之Strtok()函数

https://www.cnblogs.com/Bob-tong/p/6610806.html Strtok()函数详解&#xff1a; 该函数包含在"string.h"头文件中 函数原型&#xff1a; char* strtok (char* str,constchar* delimiters ); 函数功能&#xff1a;   切割字符串&#xff0c;将str切分成一个个子…

数据链路层:SLIP(串型线路IP) PPP(点对点协议)

SLIP 没有差错控制, 传输时必须知道对方IP, 传输使用于低速业务 19.2k.应用非常受限 PPP协议 1. PPP协议功能 处理错误检测 支持多协议(IP, IPX, DECnet 等) 连接时允许协商 IP 地址 允许身份验证 2. PPP 的组成 串型链路上封装数据报, 即支持异步链路也支持面向 比特…