软件测试相关概念

什么叫软件测试

软件测试就是测试产品没有错误,同时又证明软件是可以正确运行的

测试和调试的区别

调试一般都在开发期间 ,测试是伴随着整个软件的生命周期, 调试是发现程序中问题并且解决问题, 测试是发现程序中的缺陷

软件测试的目的和原则

目的:验证软件有没有问题
原则:以客户为中心, 遵循软件测试的规范,标准和要求

需求

满足用户期望或者文档条件和权能.
用户需求:比较粗略, 不能帮助开发人员进行开发也不能帮助测试人员写测试用例
软件需求:可以帮助开发人员写代码, 也可以帮助测试人员写测试用例, 较为详细, 通常需要从用户需求中提取.

BUG的定义

当且仅当规格说明书是存在的时候, 此时程序与规格说明书之间是不匹配的, 此时就说明软件是存在BUG的. 当不存在规格说明书的时候, 此时就以用户需求为标准, 如果软件和用户期望的结果不一致, 此时就说明软件是存在BUG的

测试用例

测试用例就是为了实施测试向被测系统提供的一个集合, 包括测试环境, 操作步骤, 测试数据, 预期结果等等

开发模型和测试模型

瀑布模型

start ->需求分析 ->计划 ->设计 ->编码 -> 测试 -> end
瀑布模型使用于一些比较稳定的产品, 发现较小的产品
但是不足之处就是将测试环节一直放到后面, 发现往往是到达后期才会出现, 因此会失去纠错机会

螺旋模型

使用于一些风险较大的产品开发

敏捷中的测试

往往对文档的依赖较小

测试中的V模型

用户需求->需求分析与设计-> 概要设计->详细设计->编码->单元测试->集成测试->系统测试->验收测试
缺点:将测试人员的工作一直推到最后面

测试中的W模型

用户需求->需求分析与设计->概要设计->详细设计->编码->集成->实施->交付
验收测试准备->系统测试准备->集成测试准备->单元测试准备->单元测试->集成测试->系统测试->验收测试
优点:测试和开发同步进行, 测试人员提早进入项目

软件测试生命周期

需求分析->测试计划->测试设计->测试开发->测试执行->测试评估

BUG的级别

崩溃->严重->一般->次要

BUG的生命周期

从open到close
这里写图片描述

测试用例基本要素

测试用例是为了实施测试而向被测试系统提供的一组集合, 包括测试环境, 操作步骤, 测试数据, 预期结果等

测试用例设计方法

等价类划分法, 边界值测试法, 正交表,场景设计

水杯的测试用例编写

这里写图片描述

公交卡的测试用例编写

这里写图片描述

测试分类

单元测试

对软件的单个模块进行测试
测试阶段:编码前或者编码后
测试对象:单个模块
测试依据:代码注释和详细设计文档
测试人员:白盒测试工程师或者开发工程师
测试方法:白盒测试
测试内容:模块接口测试, 局部数据测试, 路经测试,错误处理测试, 边界测试

集成测试

对模块与模块之间进行测试, 同时对相关硬件之间的测试
测试阶段:单元测试之后
测试对象:模块与模块之间的接口
测试人员:白盒测试工程师, 开发工程师
测试依据:单元测试结果和概要设计文档
测试方法:白盒测试和黑盒测试
测试内容:模块之间数据传输, 模块之间功能冲突, 模块组装功能正确性, 全局数据结构

系统测试

对软件的功能,性能以及软件运行的软硬件进行测试, 包括冒烟测试和回归测试. 一般顺序是冒烟测试, 系统测试, 回归测试
测试阶段:集成测试之后
测试对象:整个系统(软硬件)
测试人员:黑盒测试工程师
测试方法:黑盒测试
测试内容:功能, 界面, 可靠性, 易用性, 性能, 易用性, 兼容性, 安全性
测试依据:需求规格说明书

回归测试

当产品经过更改之后测试人员拿到产品的时候此时需要对产品进行再次测试,以确保修改后的内容没有影响到其他功能模块, 以及修改后的模块不会引起新的错误

冒烟测试

每一个新编译需要经过正式测试的软件版本 确保软件基本功能正常, 可以进行正式测试. 其中冒烟测试决定软件是否进入测试阶段

验收测试

软件部署的最后一个环节. 确保软件准备就绪, 按照产品规格说明书, 任务书, 符合购者的产品最初需求

按照测试组织

Alpha Testing:测试人员和开发人员不参与, 除测试和开发之外都可以进行测试, 测试环境是公司预发布环境
Bate Testing:测试人员和开发人员会参与, 测试环境实在客户环境中进行测试
第三方测试:外包测试

按照是否运行测试

静态测试:被测试程序不运行
动态测试:被测试程序运行

按照是否进行手工测试

手工测试:功能测试, 缺点是测试效率低, 但是可以进行探索性测试以及发散思维类测试
自动化测试:让机器代替手工进行软件测试
自动化测试步骤:
完成功能测试
提取手工测试用例, 将其转换为自动化测试用例
通过工具, 代码实现自动化的输入, 自动检测输出结果是否符合预期
自总生成测试报告
程序改进, 脚本优化

按照是否查看代码

白盒测试:查看原代码
黑盒测试:不查看源代码
灰盒测试:白盒测试+黑盒测试

按照地域测试

国际化测试以及本地化测试

按照对象测试划分

界面测试

界面是否美观

文档测试

测试需求文档的正确性, 文档的完整性, 文档的一致性, 文档的易用性, 文档术语

兼容性测试

软件之间能否相互之间正常运行, 软件和硬件之间能否正常运行
产品的开发平台测试, 浏览器测试,软件自身能否向前或者向后兼容,与其他软件兼容,数据兼容

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

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

相关文章

C++静态成员函数访问非静态成员的几种方法

https://www.cnblogs.com/rickyk/p/4238380.html 大家都知道C中类的成员函数默认都提供了this指针,在非静态成员函数中当你调用函数的时候,编译器都会“自动”帮你把这个this指针加到函数形参里去。当然在C灵活性下面,类还具备了静态成员和静…

HDU2683——欧拉完全数

题目要求符合等式的数,我们首先要做的就是分析这个数: 对于这个等式,我们可能什么都看不出来,左边很难化简的样子,所以我们就要想到通过变化怎么样把右边化成和左边形式差不多的样子。结合组合数我们想到二项式定理&am…

获取网络接口信息——ioctl()函数与结构体struct ifreq、 struct ifconf

http://blog.csdn.net/windeal3203/article/details/39320605 Linux 下 可以使用ioctl()函数 以及 结构体 struct ifreq 结构体struct ifconf来获取网络接口的各种信息。 ioctl 首先看ioctl()用法ioctl()原型如下&#xff1a;#include <sys/ioctl.h>int ioctl(int fd, i…

java中引用传递

基本概念 栈内存 所谓的栈内存就是存储进程在运行过程中变量的内存空间 堆内存 所谓的堆内存就是存储系统中数据的内存空间 数组相关的引用传递 先来看一段代码 public class ArrayDemo {public static void main(String[] args) {int[] x null;x new int[3];System.o…

(原创)C++11改进我们的程序之右值引用

http://www.cnblogs.com/qicosmos/p/3369940.html 本次主要讲c11中的右值引用&#xff0c;后面还会讲到右值引用如何结合std::move优化我们的程序。 c11增加了一个新的类型&#xff0c;称作右值引用(R-value reference)&#xff0c;标记为T &&&#xff0c;说到右值引用…

(原创)C++11改进我们的程序之move和完美转发

http://www.cnblogs.com/qicosmos/p/3376241.html 本次要讲的是右值引用相关的几个函数&#xff1a;std::move, std::forward和成员的emplace_back&#xff0c;通过这些函数我们可以避免不必要的拷贝&#xff0c;提高程序性能。move是将对象的状态或者所有权从一个对象转移到另…

微型个人博客服务器

Http相关简介 Http是应用层的基于请求响应的一个协议, 其中Http的请求响应可以分为四部分. 请求行, 请求报头,空行, 请求正文.其中请求行包括了请求方法, url, 版本号, 请求报头包括请求属性, 冒分割的键值对, 每组属性之间都以换行的形式分开, 最后一空行作为请求的结束标识.…

[C/C++]关于C++11中的std::move和std::forward

http://blog.sina.com.cn/s/blog_53b7ddf00101p5t0.htmlstd::move是一个用于提示优化的函数&#xff0c;过去的c98中&#xff0c;由于无法将作为右值的临时变量从左值当中区别出来&#xff0c;所以程序运行时有大量临时变量白白的创建后又立刻销毁&#xff0c;其中又尤其是返回…

Linux I/O复用之select函数详解

http://blog.csdn.net/y396397735/article/details/55004775 select函数的功能和调用顺序 使用select函数时统一监视多个文件描述符的&#xff1a; 1、 是否存在套接字接收数据&#xff1f; 2、 无需阻塞传输数据的套接字有哪些? 3、 哪些套接字发生了异常&#xff1f; sel…

深入研究socket编程(3)——使用select函数编写客户端和服务器

http://blog.csdn.net/chenxun_2010/article/details/50488394 首先看原先《UNIX网络编程——并发服务器&#xff08;TCP&#xff09;》的代码&#xff0c;服务器代码serv.c&#xff1a; [cpp] view plaincopy #include<stdio.h> #include<sys/types.h> #inclu…

Ubuntu安装搭建Clion环境

呜呜呜&#xff0c;太辛苦了&#xff0c;我终于安装好这个了。 大概过程就是先在官网下载安装包&#xff0c;然后解压以后用终端移动到对应文件夹下运行clin.sh 运行完以后会有一些窗口&#xff0c;第一个选择don’t~~&#xff0c;然后点击ok 接受&#xff08;你可以不接受…

UNIX网络编程——select函数的并发限制和 poll 函数应用举例

http://blog.csdn.net/chenxun_2010/article/details/50489577 一、用select实现的并发服务器&#xff0c;能达到的并发数&#xff0c;受两方面限制 1、一个进程能打开的最大文件描述符限制。这可以通过调整内核参数。可以通过ulimit -n来调整或者使用setrlimit函数设置&#x…

【Java学习笔记二】继承和多态

与C不同的是&#xff0c;在Java中&#xff0c;一个类只能直接继承另一个类&#xff0c;而不允许继承多个类&#xff0c;这个新类称为继承类、派生类或者子类&#xff0c;而被继承的类称为基类或者父类。 继承类能够继承基类的群不属性和行为。 面向对象程序设计的三大特点为&…

Linux系统编程——线程池

http://blog.csdn.net/tennysonsky/article/details/46490099# 线程池基本原理 在传统服务器结构中&#xff0c;常是有一个总的监听线程监听有没有新的用户连接服务器&#xff0c;每当有一个新的用户进入&#xff0c;服务器就开启一个新的线程用户处理这 个用户的数据包。这个线…

简单Linux C线程池

http://www.cnblogs.com/venow/archive/2012/11/22/2779667.html 大多数的网络服务器&#xff0c;包括Web服务器都具有一个特点&#xff0c;就是单位时间内必须处理数目巨大的连接请求&#xff0c;但是处理时间却是比较短的。在传统的多线程服务器模型中是这样实现的&#xff1…

IO多路复用之poll总结

http://www.cnblogs.com/Anker/p/3261006.html 1、基本知识 poll的机制与select类似&#xff0c;与select在本质上没有多大差别&#xff0c;管理多个描述符也是进行轮询&#xff0c;根据描述符的状态进行处理&#xff0c;但是poll没有最大文件描述符数量的限制。poll和select同…

【C++学习笔记二】C++继承

继承 继承允许我们一句另一个类来定义一个类&#xff0c;这使得继承和维护一个程序变得更加容易&#xff0c;也达到了重用代码功能和提高执行效率的效果。 一般格式为&#xff1a; class 派生类名 :访问修饰符 基类名{};其中访问修饰符是public protected private中的一个&a…

处理大并发之二 对epoll的理解,epoll客户端服务端代码

http://blog.csdn.net/wzjking0929/article/details/51838370 序言&#xff1a; 该博客是一系列的博客&#xff0c;首先从最基础的epoll说起&#xff0c;然后研究libevent源码及使用方法&#xff0c;最后研究nginx和node.js&#xff0c;关于select,poll这里不做说明&#xff0c…

C++基类指针指向派生类(指针)

我们常用基类指针指向派生类对象来实现多态性。 私有继承不允许基类指针指向派生类 基类指针只能访问到基类中含有的公有成员。 当用基类指针指向派生类对象在动态分配堆上内存的时候&#xff0c;析构函数必须是虚函数! 成员如果是数据成员的话访问的是基类的版本&#xff…

一个简单的linux线程池

http://blog.csdn.net/wzjking0929/article/details/20312675 线程池&#xff1a;简单地说&#xff0c;线程池 就是预先创建好一批线程&#xff0c;方便、快速地处理收到的业务。比起传统的到来一个任务&#xff0c;即时创建一个线程来处理&#xff0c;节省了线程的创建和回收的…