软件测试基础_软件测试基础设施测试-程序员宅基地

技术标签: java  软件测试  测试工具  

随着用户对软件产品质量要求的不断提高以及人们对软件质量的重视程度越来越高,软件测试在软件开发的地位越来越重要。软件工程的总目标是充分利用有限的人力,物力和财力,高效率,高质量地完成软件开发项目。不足的软件测试势必会使软件带着一些未揭露的隐藏错误投入运行,这将意味着让用户承担更大的风险。因此,尽可能多地发现软件中的Bug,是软件工程测试师的终极目标之一。

1.Bug的由来

1947年,计算机MarkⅡ还是由机械式继电器和真空管驱动的,当技术人员正在进行整机运行时,它突然停止了工作。技术工作人员花了很长的时间都没有找到问题所在,Grace Hopper最终发现这台巨大的计算机内部一组机械式继电器的触点之间有一只飞蛾,这显然是由于飞蛾受到光和热的吸引,飞到触点上,然后被高电压击死,飞蛾在触点之间导致断路所致。这就是bug的由来。
在这里插入图片描述

2.软件质量

软件的质量要求,从根本上说是为了引导和满足客户的需求,而软件质量具体表现在软件产品固有的特性方面,如产品的功能性,可靠性,易使用性,效率,可维护性,可移植性和安全性等。对于软件的质量,客户,软件产品开发人员和软件开发企业的认识有不同的侧重点,但必须达到一个平衡点。
从客户的角度:主要关注产品的功能性需求和非功能性需求。
从软件产品开发人员的角度来看:除客户所关注的性能外,还需要关注产品的可维护性,兼容性,可扩展性和可移植性。
对于软件开发企业来看:除了客户和开发人员所关注的重点外,软件的质量需求更多体现在市场竞争,成本控制等方面。
综上所述:高质量软件应具备的特性包括:
(1)满足用户的需求
(2)合理处理进度,成本,功能的关系
(3)具备一定的可扩展性和灵活性,能够适应一定程度的需求变化
(4)具备一定的可靠性,能够有效处理例外的情况,能够承受各种非法情况的冲击
(5)保持成本和性能的平衡

那么到底如何保证软件质量呢?
1.要有一个很好的开发方法,规范,标准,让程序具有很好的可读性和维护性。
2.可以通过测试部门的上线测试要求。
3.还要通过第三方测试,等保测评。
4.界面友好,美观,并且具有很好的并发性。
5.软件具有很好的人际交互。

3.软件测试

软件测试就好比工厂的质量检验工作,是对软件产品和阶段性工作成果进行质量检验,力求发现其中的各种缺陷,并督促修正缺陷,从而控制和保证软件产品的质量。
软件测试的定义:
软件测试就是对软件产品进行验证和确认的活动过程,其目的就是尽快尽早地发现软件产品在整个开发什么周期存在的各种缺陷,以评估软件的质量是否达到可发布水平。
软件测试的目的:
软件测试的目标之一是尽快尽早地找到至今没有被发现的缺陷,而不是确保没有缺陷。
软件测试的辩证统一观点:
G.J.Myers进一步提出了程序测试的3个重要观点:
(1)测试是为了证明程序有错,而不是证明程序无措;
(2)一个好的测试用例在于它发现至今没有发现的错误;
(3)一个成功的测试是发现了至今未发现的错误的测试。
从质量保证观点来看软件测试,就是证明或者验证软件的功能特性和非功能特性满足用户的需求,主要是针对软件的所有功能点逐一验证其正确性,对于非功能带你要满足用户的要求;从软件测试的目标和降低测试成功等方面来看,就是尽早尽快地发现更多的软件缺陷,主要采取试图破坏系统,摧毁系统等手段,发现系统中存在的各种缺陷。
软件测试的原则:
(1)可追溯性,所有的测试都应追溯到用户需求;
(2)尽早开展预防性测试,测试工作进行得越早,越有利于提高软件的质量和降低软件的质量成本,这是预防性测试的基本原则;
(3)投入/投出原则,根据软件测试的经济成本观点,在有限的时间和资源下进行完全测试找出软件所有的错误和缺陷是不可能的,也是软件开发成本所不予许的,因此软件测试不能无限进行下去,应适时终止;
(4)回归测试,由于修改了原来的缺陷,将可能导致新的缺陷产生。因此修改缺陷后,应集中对软件可能受影响的模块/子模块进行回归测试,以确保修改缺陷后不引入新的软件缺陷。
(5)80/20原则,系统中80%左右的缺陷主要来自20%左右的模块/子系统;
(6)设立独立的测试机构或委托第三方测试。由于思维定势和心理因素等原因,开发工程师难以发现自己的错误,同时揭露自己程序中的错误也是件非常困难的事。因此,测试一般由独立的测试部门或第三方机构进行,但需要软件开发工程师的积极参与。

4.软件缺陷

软件缺陷是软件产品预期属性的偏离现象,它包括检测缺陷和残留缺陷。检测缺陷是指软件在进入用户使用之前被检测出的缺陷。残留缺陷是指软件发布后存在的缺陷,包括在用户安装前未被检测出的缺陷和已被发现但还未被修复的缺陷。
软件故障是指用户使用软件时,由于残留缺陷引起的软件失效症状。
不要将软件缺陷和软件错误两个概念混淆起来。软件缺陷的范围更广,它涵盖了软件错误,不一致性问题,功能需求定义缺陷和产品设计缺陷等。软件错误仅是软件缺陷的一种,即程序或系统的内部缺陷,通常是软件代码本身的问题,如算法错误,语法错误,内存泄露,数据溢出等,软件错误必须被修正,但软件缺陷不一定被修正。

5.测试用例

实现测试目标,完成测试,是借助测试用例来实现的。测试用例是测试执行的基础,概括地说,测试用例是为某个特定测试目标设计的,它是测试操作过程序列,条件,期望结果及相关数据的一个特定的集合。因此,测试用例必须给出测试目标,测试对象,测试环境,前提条件,输入数据,测试步骤和预期结果。
测试目标: 回答为什么测试,如测试被侧件的功能,性能,兼容性,安全性等。
测试对象: 回答测什么,如对象,类,函数,接口等。
测试环境: 回答测试用例运行时所处的环境,包括系统的软硬件配置和设定等要求。
测试前提: 回答测试在满足什么条件下开始测试,即测试用例运行时所处的前提条件。
输入数据: 回答运行测试时需要运行哪些测试数据
,即在测试时,系统所接受的各种可变化的数据组。
操作步骤: 回答运行测试用例的操作步骤序列,如先打开对话框,如先打开对话框,输入第一组测试数据,点击运行按钮等。
预期结果: 回答按操作步骤序列运行测试用例,被侧件的预期运行结果。
由于在测试时不可能进行穷举测试,所以应以最小的财力和物力投入,在最短的时间内以最低成本尽快地发现软件缺陷。因此要提高测试效率,节约测试时间,就必须设计好测试用例。
在实践操作中,可遵循以下步骤:
(1)指定测试设计用例策略和思想,在软件测试计划中描述出来。
(2)设计测试用例的框架,即测试用例的结构。
(3)逐步细化设计具体的测试用例。
(4)采用技术评审,不断优化测试用例。
在这里插入图片描述

6.软件测试分类

软件测试分类,可按照软件开发的阶段,技术,测试实施组织和软件功能的发展历史阶段等来进行划分。按照软件工程的发展历史和发展阶段来划分,软件测试可以划分为基于过程的软件测试,基于对象的软件测试和基于构件的软件测试。
按照开发阶段划分,软件测试可以划分为单元测试,集成测试,系统测试,确认测试和验收测试。
(1)单元测试:又称模块测试,其目的在于检查每个单元能否正确实现详细设计说明中的功能,性能,接口设计和约束等要求,发现单元内部可能存在的各种缺陷、
(2)集成测试:又称为组装测试,主要测试单元之间的接口关系,逐步集成为符合概要设计要求的整个系统。
(3)系统测试和确认测试:在真实或模拟系统运行的环境下,为验证和确认系统是否达到需求规格说明书规定的要求,而对集成的硬件和软件系统进行的测试加粗样式
(4)验收测试:按照项目任务书或合同,供需双方约定的验收依据文档进行的对整个系统的评测,决定是否接受或拒收系统
按照测试实施组织划分,软件测试可分为开发方测试,用户测试和第三方测试。
(1)开发方测试:又称“验收测试”或“ α \alpha α测试”。开发方在软件开发环境下,通过检测和提供客观证据,证实软件的实现是否满足规定的需求,可以和软件的“系统测试”一并进行。
(2)用户测试:又称“ β \beta β测试”。软件开发商有计划地免费将软件分发到目标用户市场,在实际应用环境下,用户通过运行和使用软件找出软件使用过程中发现的软件缺陷与问题,检测与核实软件实现是否符合用户的预期要求,并把信息反馈给开发商。
(3)第三方测试:又称为“独立测试”,是介于软件开发商和用户之间的测试组织的测试。软件第三方测试也就是由在技术。管理和财务上与开发方和用户相对独立的组织进行的软件测试。一般情况下是在模拟用户真实应用环境下,进行软件确认测试。
按照测试技术,软件测试可划分为静态测试和动态测试技术:
静态测试强调不运行程序,通过人工对程序和文档进行分析与检查。静态测试实际上是对软件中的需求说明书,设计说明书,程序源代码等进行评审。
动态测试是指通过人工或使用功能运行程序进行检查,分析程序的执行状态和程序的外观表现,一般包括白盒测试,黑盒测试和灰盒测试。
白盒测试: 又称为结构测试。白盒测试可以把程序看成装在一个透明的白盒子里,也就是清楚了解程序结构和处理过程,检查是否所有的结构及路径都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。
黑盒测试: 黑盒测试把测试对象看成一个黑盒子,完全不考虑程序内部结构和处理过程,通过在程序界面处进行测试,它只是检查程序或软件是否按照需求规格说明书的规定正常运行。
灰盒测试: 介于白盒测试与黑盒测试之间的测试。灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不想白盒测试那样详细,完整。灰盒测试结合了白盒测试和黑盒测试的要素。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_51447436/article/details/123634461

智能推荐

hdoj Be the Winner 2509 (NIM博弈)_hduojbe the winner-程序员宅基地

文章浏览阅读326次。Be the WinnerTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2713 Accepted Submission(s): 1484Problem DescriptionLet's consider m_hduojbe the winner

unity 手游虚拟摇杆代码参考-程序员宅基地

文章浏览阅读3.2k次。手游 摇杆_摇杆代码

memlock过低导致的数据库性能问题(r6笔记第10天)-程序员宅基地

文章浏览阅读824次。今天在一台备库机器上准备搭建active data guard ,在主库上做配置的时候,发现主库的反应有些慢,主要的感觉就是敲命令的时候似乎都有些停顿。带着疑问查看了下数..._memlock limit is less than 64mb

推荐几本shell学习的书 (r9笔记第98天)-程序员宅基地

文章浏览阅读180次。周末整理了一下书架,一来书架上实在是放不下东西了,四层书架,两层在闺女的触及范围之内,所以直接拿胶带封住,留下两层勉强可用。二来书架已经不是放书的地儿,生活用品已..._shell 书籍 推荐 杨建荣

PE文件格式_pe工具的文件扩展名-程序员宅基地

文章浏览阅读1.2k次。PE文件格式分析及修改(图)12009-01-09 14:08PE 的意思是 Portable Executable(可移植的执行体)。它是 Win32环境自身所带的执行文件格式。它的一些特性继承自Unix的Coff(common object file format)文件格式。“Portable Executable”(可移植的执行体)意味着此文件格式是跨Win32平台的_pe工具的文件扩展名

Bluetooth MESH探究 --- (7) BLE core spec之为什么BLE能有更低功耗_ble 为什么功耗低-程序员宅基地

文章浏览阅读3.6k次。BLE与其它蓝牙协议最典型的区别就是BLE是专门为低功耗、低复杂度以及低成本设备设计。那么,BLE是通过什么方法做到更多功耗的呢? 对于蓝牙设备甚至可以说对于所有无线通信设备来说,最大的功耗就来自于射频电路部分。比如,对于TI CC2540芯片来说,RF处于接收状态的电流为19.6mA,RF处于发射状态的电流为24mA,而RF处于sleep状态的电流仅为0.9uA。所以,如果能够最大限度地_ble 为什么功耗低

随便推点

纳什博弈论-程序员宅基地

文章浏览阅读1.5k次。纳什博弈论的原理与应用   1950年和1951年纳什的两篇关于非合作博弈论的重要论文,彻底改变了人们对竞争和市场的看法。他证明了非合作博弈及其均衡解,并证明了均衡解的存在性,即著名的纳什均衡。从而揭示了博弈均衡与经济均衡的内在联系。纳什的研究奠定了现代非合作博弈论的基石,后来的博弈论研究基本上都沿着这条主线展开的。然而,纳什天才的发现却遭到冯·诺依曼的断然否定,在此之前他还受到爱因斯坦的冷遇。但是骨子里挑战权威、藐视权威的本性,使纳什坚持了自己的观点,终成一代大师。要不是30多年的严重精神病折_纳什博弈论

ios注意事项-程序员宅基地

文章浏览阅读177次。1.tableview顶部留白问题当cell的类型是plaint类型时,直接设置self.automaticallyAdjustsScrollViewInsets=NO;应该就可以的当cell的类型是group类型时,此时要去掉tableView顶部的空白需要两步:1.设置tableView的tableHeaderView高度为0.5;self.MenuTable.tableHea

数据结构——不带头节点的单链表_不带图节点的单链表类的成员函数-程序员宅基地

文章浏览阅读403次。作者:小琛欢迎转载,请标明出处单链表的概念概念:**链表是一种物理存储结构上非连续、非顺序,逻辑上连续的结构。**是通过链表中的指针链 接次序实现的。如下图:单链表的实现鉴于后续的面试和oj题目类型,这里实现不带头节点的单链表Plist.h#ifndef _LIST_H__#define _LIST_H__#include <stdio.h>#include &l..._不带图节点的单链表类的成员函数

Cento7配置网络及代理_centos7网卡不支持代理-程序员宅基地

文章浏览阅读528次。1、配置网络编辑网卡配置文件[root@localhost yum.repos.d]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736TYPE=EthernetBOOTPROTO=noneDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_..._centos7网卡不支持代理

input输入框赋值、取值_input框赋值取值-程序员宅基地

文章浏览阅读3.9k次。目录htmleasyuilayui自己做个记录,在对页面进行修改,开发的时候,总是去查资料html<input id="cpno" name="cpno" value="" />js: 赋值: $('#cpno').val( "CSDN有限公司"); -------方式1 $('#cpno').val("setValue", "CSDN有限公司"); -------方式..._input框赋值取值

如何有效预防CC攻击?_怎么防止被c&c攻击-程序员宅基地

文章浏览阅读348次。CC攻击也是属于流量型攻击中的一种,大部分的高防机房,是可以承受住大量的DDOS攻击的,这些防护主要来源于硬防。CC攻击可以算的上是DDOS攻击的一个升级版,如果想要抵御CC攻击可没有抵御DDOS攻击那么简单,单靠硬防还是不够的,必须要配合人工进行策略调控才可以防御住。CC攻击基本上都是针对端口的攻击,所以网站遇到CC攻击的几率会更大一些。在攻击模式上与一般的流量型攻击是差不多的,主要是通过伪装成正常的用户不停的对网站进行访问,从而导致服务器资源耗尽,无法正常的被访问。那么我们应该怎么去预防CC攻击呢?_怎么防止被c&c攻击

推荐文章

热门文章

相关标签