Entries by calvin.jiang

黑盒测试及其分类介绍(二)

  上次跟大家分享了黑盒测试中功能测试的几个重要的测试种类, 这次继续和大家来分享黑盒测试中性能测试的内容。 现在很多企业在开发一个产品的时候,首先会定义产品的功能、功能约束限制、性能指标和其他相关的需求内容;那么当一个产品开始进入测试阶段时,肯定是先要保证其所有的功能都能正常时限,然后再保证产品的性能指标; 性能测试主要分为性能测试、负载测试、强度测试、容量测试、配置测试、失败测试等等 性能测试主要是评估被测对象的响应时间和吞吐量; 负载测试主要是指被测对象在系统资源不足的情况下,发现被测对象问题; 容量测试主要是被测对象在大数据量下,发现程序可能出现的问题; 强度测试主要是指使被测对象在高负载下,可能出现的问题; 配置测试是指在配置被测对象系统的数据库或者一些硬件软件配置时可能出现的问题; 以上就是在黑盒测试中性能测试的主要测试类型,一般在中小型企业中可能只会进行像性能测试、负载测试、强度测试、容量测试这几种主要的性能测试种类,在大型企业测试流程较完善测试时间较充足的情况下,会增加如配置测试、失败测试、可靠性测试等更多关于性能测试的工作; 性能测试较功能测试来说还不是特别普及,主要因为现在很多的产品软件都属快餐型产品,客户要求产品快速成型,功能基本完善,性能测试就没有考虑,这样的产品软件确实能够很快的站住市场,抓住用户,但我认为盲目地追求眼前的利益而忽略了产品的性能,会使用户在后期体验中产生众多的问题。

黑盒测试及其分类介绍(一)

黑盒测试,又称为数据驱动测试,定义为把被测试对象看作是一个黑色的盒子,测试人员不关心软件内部逻辑是如何实现,只关心软件外部实现的功能是否与用户的需求规格说明一致; 又叫数据驱动测试,是因为黑盒测试主要关注用不同的输入,看程序的输出是否合理,是否达到软件的需求; 黑盒测试分为两大类,功能测试和性能测试,这篇先来简单介绍下功能测试: 功能测试顾名思义就是对被测对象的功能进行测试验证,验证软件实现的功能是否符合需求规格说明,功能测试又分为业务逻辑测试(也就是功能测试,主要测试方式)、UI测试(用户界面)、兼容性测试、安装测试、安全性测试、可用性测试 UI测试指的是对被测对象的用户界面进行测试验证,主要关注用户界面的风格是否符合用户需求、页面是否美观、排版是否合理等等; 兼容性测试指的是被测对象是否能兼容之前的老版本功能,还包括各种浏览器的兼容性验证、各种操作系统的兼容性验证、分辨率的兼容性验证等等 安装测试指的是安装被测对象是否正确,安装过程是否易懂明了,其实安装测试还包括卸载和升级,这部分以后有机会再和大家分享 安全性测试指的是验证被测对象是否能识别或者防止如黑客攻击,内部数据泄露等风险问题 可用性测试指的是验证被测对象是否能满足用户的一些可用性操作的需求,如易用,操作习惯、界面风格,提示信息,内容合理等等非常多的方面,可用性测试关注的方面主要针对客户,而且非常的多,本人目前也仍在学习中,有机会再和大家一起探讨研究

分享关于测试报告的编写

  在一轮测试或者整体测试结束后,测试人员都需要编写测试报告或者缺陷报告来作为这一次测试的总结性文档,以便开发人员、项目经理、测试组人员及QA等其他部门人员了解本次测试结束后的一些相关情况。 有些公司会把缺陷报告和测试报告分开来写,这要看具体公司的一些项目流程上的计划安排。 单独的缺陷报告是统计本次测试所发现的BUG数,包括本轮BUG总数,每个模块的BUG数,几轮测试的BUG趋势图,每个开发人员名下的BUG数等等,那么有些公司也会把缺陷报告里的这些内容写到测试报告里,其实是一样的。 测试报告里除了描述测试报告的目的,背景,时间进度,测试环境外,最重要的是测试过程评估和测试对象质量评估。时间进度描述实际完成测试的测试开始时间,测试结束时间等等,测试环境描述实际完成测试的硬件环境、软件环境和网络环境。 测试过程评估主要描述在该轮测试或者整体测试的过程中,测试人员是怎么进行测试执行的,遇到过什么样的问题,是如何解决的。 测试对象质量评估主要描述测试人员在结束该轮测试后对被测对象的质量评估,比如某个模块的BUG数,某个模块不是很稳定之类。

分享项目测试计划的编写心得

  在项目需求分析结束之后,开发部会进行概要设计、详细设计,而测试部则需要为了后续的测试用例,编写整个项目的测试计划;每个公司的测试计划的模板都不一样,测试流程也不会一样,大型公司的项目周期相对较长,较稳定,故采取计划驱动的方式来编写测试计划会更适合,而中小型公司则更适合敏捷开发,如极限编程; 项目测试计划一般包括几个大点:目的、背景、范围、时间、测试对象、人员进度安排、测试环境、测试方法、测试工具、风险分析等等; 目的:描述该份测试计划文档的目的 背景:描述测试项目的背景 范围:描述测试项目的测试范围,功能点或者模块 时间:描述测试项目的预期测试开始时间和预期测试结束时间 测试对象:描述测试项目的测试对象,如具体是整个项目的使用模块还是具体哪几个功能模块 人员进度安排:描述本次测试项目下,测试人员的安排,如哪个测试人员负责的功能模块和测试任务(如编写测试用例或报告等),还有测试人员时间的进度安排 测试环境:描述本次测试项目的硬件环境、软件环境、网路环境 测试方法:描述本次测试项目所需要用到的测试方法,如黑盒,白盒,灰盒,性能,自动化等等 测试工具:描述本次测试项目在测试过程中会需要用到的测试工具 风险分析:描述在本次测试项目的测试过程中可能会出现的一些风险(如需求变更,人员更换,硬件性能不满足要求,技术人员技术达不到需求等等),并对这些风险做规避措施;  

分享关于软件测试的种类和定义

什么是软件? 软件就是计算机程序、数据和各种文档的集合; 什么是软件测试? 软件测试就是对计算程序、数据和文档验证并发现问题的过程; 软件测试的种类? 1. 按照阶段来分的话:可以分为单元测试、集成测试、系统(功能测试)、验收测试;这里为什么有系统(功能)测试呢?其实不同公司的测试流程不一样,而系统测试更高级于功能测试,后面会讲到 2. 按照是否查看代码来分:可以分为白盒测试、黑盒测试、灰盒测试; 3. 按照是否执行程序来分:静态测试、动态测试 4. 其他:冒烟测试、回归测试、随机测试 而在这之中,黑盒测试又分为功能测试盒性能测试;功能测试又分为业务逻辑测试(功能测试)、UI测试(界面测试)、易用性测试、安装测试、安全性测试;性能测试又分为性能测试、压力测试、负载测试、容量测试、可靠性测试、失败测试等 这些就基本是现有软件公司所可能要进行的测试种类,一般的小型公司经常会用到业务逻辑测试也就是功能测试,而很少会进行性能测试,因为对于测试团队和公司的成本及时间来说,首先要保证的肯定是软件的功能(用户提出的业务需求)是否实现,是否能正常运行,在这些都确定OK的情况下,才会考虑性能测试盒其他类型的测试;

BUG流程管理分享

现在的软件公司都在使用着不同种类的缺陷管理工具,如Bugzilla、Bugfree、TD、notes(IBM)等;其实这些工具都是千篇一律,其主要的功能就是将在系统或软件中所发现的BUG有条理的进行管理,方便测试人员和开发人员进行BUG的修复和验证。 和大家分享一下BUG缺陷管理的基本流程: 1. 当开发人员发布软件版本后,测试人员进行冒烟测试,测试通过后则开始进行系统测试或功能测试,这要看软件的计划流程是怎样; 2. 测试人员在测试中发现异常现象,确定为BUG后,将其提交至缺陷管理工具,这时该BUG的状态为new; 3. 测试经理或负责人审核该BUG,确认是问题后,将该BUG状态修改为open,并将该BUG负责人修改为项目开发经理; 4. 项目开发经理将该BUG分配给所属模块的开发人员,该开发人员确认该BUG是否为需要修改的BUG,或不认为是BUG,或该BUG已重复提交,或该BUG可以延后修改,或该BUG不能重现,或该BUG可以没必要修改等等,开发人员将该BUG状态修改为won’t fix/fixed/duplicated/can’t reproduce/rejected等,并将该BUG负责人修改为该BUG提交测试人员 5. 该BUG提交测试人员根据该BUG当前状态进行相应操作,如fixed则进行回归测试,测试通过后,将BUG状态修改为closed;如won’t fixed或duplicated或rejected,经确认后将该BUG状态修改为closed 不同的缺陷管理工具中BUG的状态内容可能会稍有出入,但大体都是一致的,测试人员根据BUG的具体状态进行对应的操作,如回归BUG,确认BUG,重现BUG,关闭BUG等等;

浅谈软件工程(一)

许多人都在编写程序,业务人员编写电子表格程序来简化工作,开发工程师编写数据来处理数据,满足用户业务功能需求,业务爱好者为了自己的兴趣爱好也编写程序。然而,绝大多数的软件开发是个专业化的活动,软件的开发室达到为了特定的业务目的,是为了植入到其他的设备、作为软件产品,例如信息系统、管理系统等。那些除了开发者外还有其他用户使用的专业化软件通常是由团队开发而不是个人独自完成。 软件工程的目的是支持专业化的软件开发,而不是个体编程。它包括支持程序描述、设计和进化的相关技术。以下我个人总结了几点,和大家共同学习: 1. 什么是软件?计算机程序、数据和相关文档 2. 好的软件应该具备什么?首先具备用户需求的功能和性能,还应该可维护、可靠、可用 3. 什么是软件工程?关于软件生产的各个方面的工程学科 4. 软件工程面临的主要挑战?不断增长的多样性、减少交付时间以及开发可靠地软件的需求 许多人把软件等同于计算机程序,其实这种理解是很狭隘的。软件应该包括程序和所有使程序正确运行所需要的相关文档和配置信息。一个专业化开发的软件系统通常不止一个程序。系统通常包含一些单独的程序、用于设置这些程序的配置文件,还可能包括描述系统结构的系统文档和解释如何使用系统的用户手册。 软件工程虽然是一门工程学科,但其在软件开发的整个过程中实际有着非常重要的位置,本人虽然做了测试工作多年,但对软件工程还是个初学者,希望以后大家可以一起学习这门非常重要的知识。

浅谈软件工程

现代社会离不开软件。 国家基础设施和公共建设都是由基于计算机的系统控制,大多数的电子产品都有计算机和控制软件。工业制造和金融系统已经完全计算机化了。娱乐业,包括音乐产业、计算机产业、电影和电视产业,也都是软件密集型的产业。因此,软件工程对于一个国家和整个国际社会的运转都是必不可少的。 现在仍有很多有关软件项目出问题和“软件失败”的报道,除开软件测试遗漏的一些致命性或严重性或严重影响用户体验的问题外,软件工程因不能充分支持现代软件的开始而遭非议。然而,在我看来,这些所谓的软件失败主要源于以下两方面的原因: 不断增长的需求:由于新的软件工程技术可以帮助我们构建更大更复杂的系统,用户的需要因而在发生改变。系统必须更快速地构建并交付;需要更大更复杂的系统;系统必须具备在以前看来不可能实现的功能。现有的软件工程方法已经不能应对新形势,而新的软件工程技术还有待于进一步发展。 期望值太低:不采用软件工程的方法和技术区编写计算机程序相对来讲要容易一些。很多公司因为他们的产品和服务在逐步发展而在软件开发中随波逐流。他们通常不使用软件工程方法,结果导致他们的软件比预计的费用高且不可靠。 因此我们需要更好的软件工程教育和实践来解决此类问题。