谈软件测试---一年测试工作总结

本文涉及的产品
性能测试 PTS,5000VUM额度
简介:

  这篇总结推迟了好久,一直想在工作一年之后写一篇总结,由于各种琐事以及感觉想法的不成熟,一推再推。这两天尤为强烈,不管怎样都应该把这一年多测试工作学到的知识和想法记录下来。

     软件测试行业在国内发展时间较短,每个公司对软件测试公司的定位和工作内容也不经相同。本人只在一个公司从事测试工作并时间不长,如有偏见欢迎指正,不胜感激。^_^!!

 


个人对功能、性能、自动化三个方面测试的认识



功能测试的重点在哪儿?

 

  说一下本人对功能测试的理解,关于功能测试重点在对被测系统的了解上。至于测试方法:等价类划分、边界值、错误推测、因果图....等测试方法很容易理解。把这些方法应用到系统功能测试中也不难,关键是如何应用?这里又引出了一个东东,叫“需求文档”?一个系统不是你想测什么就测什么?也不是你认为它是bug它就是bug的。

例如:一个登录,用户名没区分大小写,我是用小写注册的,但是登录时,我用的大些却可以登录,这算一个bug吗?不是个人认为的是或不是的,要根据需求来判定。

   需求很重要,好吧!能得到一份完整或不变的需求对测试人员来说应该是一件很幸福的事儿?因为我们少去很多麻烦。好吧! 假如一下我们得到了这么一份需求。那我们是不是根据需求就开始对系统进行测试了呢?那么这时开发人员还没把产品整出来,那我们做什么呢?要不想想我们测试 什么吧!?或怎么对系统进行测试,做哪些验证。这就引出来一个东东。叫“测试用例”。为什么要写测试用例?http://www.cnblogs.com/fnng/archive/2011/09/10/2173149.html 在我的另一篇博文里有讲。

想做好功能测试要做好四点:

1. 非常了解被测试系统,各个功能和各个业务逻辑。

2. 需求文档,如果你不知道怎么测,那你一定没看需求文档

3. 测试方法的学习,方法不难理解,如何运用到项目中是关键

4. 测试用例,在上面三点的基础上写用例,一个用例可以体现出你对上面三点的掌握程度

 

性能测试水很深!

  很幸运刚进公司老大就让我对公司系统做性能测试,那时学了几天JMeter LoadRunner掌握一些基本操作就以为自己会做性能测试了,在此自我鄙视一下自己的无知。其实,性能测试的重点不在性能测试工具的学习上。天天看到群里有人问,LR怎么用?又录制不了脚本了。脚本回放有错。如何设置XXX?为什么高手能用树叶杀人呢?一般的小罗罗都在抢屠龙刀,倚天剑。以为得到了屠龙刀就是最牛B的人了。

  当然,你也通过分析系统的压力点、LR录制脚本,设置用户,做压力,分析结果,整理测试报告。完成了性能测试的整个过程。那么我说这个性能测试报告是有效的,但它不一定是有用的。

  为什么说是有效的:因为在性能测试报告中,你把测试环境、测试工具、测试方法、测试结果都描述的很清楚。那么这次性能测试就是有效的。在你所在的环境中,你是测出了这样的效果。并未掺假,全部真实的记录。

  为什么说它不一定是有用的,你了解系统架构么?知道数据库、中间件、前端程序的运行方式和处理机制么?了解网络协议么?了解操作系统么?熟悉开发系统的语言么?如java  JVM的内在机理知道么?这些都是系统运行的一部分,都在影响着系统的性能。如果不了解这些,你如何做出有价值的有参考意义的性能测试。如果你的性能测试没有参考意义,那不是自已在逗自己玩么。

《我眼中的性能测试工程师》http://qa.taobao.com/?p=8308 

 

 

为什么要做自动化测试?

 

  貌似好多人都在热追自动化测试,貌似自动化测试比手工测试先进牛B。本人对自动化测试也没什么实际经验,只是对QTPselenium浅学了两下。这里也讨论两三句。

自动化测试无非就是用工具代替人对系统进行验证,它如何知道怎么验证。这个要你一步一步教它。所以,自动化前期的投入很大。

什么项目适合自动化?

  需求变动小、项目周期长、可复用性高。如果不满足这三个条件,你要掂量一下是否要对项目引入自动化。

那么它的找bug能力呢?

  我所了解在我的手工测试中,相当一部分bug并非我按照用例测出来的。有统计它只能找出来30%bug70%还是要靠手工测试。那投入那么大,找bug能力都不强。为什么还有那么多公司试水,做自动化测试主要是在加入新的功能后保证已经功能的正确性。

那么测试人员要不要学自动化测试呢?

  我犹豫了很久还是觉得要。自动化测试毕竟是软件测试的一个趋势。从测试人员的自我技能的提升也一个方向。至于公司是否真的需要自动化测试,自动化测试是否得到很好的收益就另说的了。

 


下面是个人对一些问题的看法。

 

 

测试人员是否要懂代码?

 

懂是必须的,更客观的说法,看下图:

上图是根据自己的理解所画,根据你所做的测试工作不同,所要掌握的测试知识的多少不同。

我确认一点代码也不懂的测试人员,工作细心,认真的执行测试用例,也能把测试工作做好。那么你的发展方向在那里?你说可以做需求分析人员、质量管理人员。貌似在偏离软件测试工作。想成为一个软件测试高手,懂代码是必须的,我没见过哪位测试高手或专家对代码是一窍不通的。

不懂开发的人员更能从用户的角度测试?

见某测试人员云云,他们公司招测试人员专招非计算机不懂开发的测试人员来测试,公司的意思是这样的人更能站在用户的角度上去 测试软件。好吧!我不想再阐述测试人员不光只是测试界面的工作,也许你们公司就只测界面。我一直不理解有为什么懂了计算机懂了开发就不能站在用户的角度上 去测试。非专业的人可以从非专业的角度和思路去非常规的测试点。我认为他也有可能找一些不是bugbug去给开发人员添乱。

 

测试人员为什么被“小看”?

 

可能和上个问题有关,看到好多测试人员在抱怨工资比开发人员低。被开发人员鄙视,不被公司重视。我想有相当一部分人不是学软件测试专业的吧!?好点的是从培训机构出来的,还有些是计算机专业开发知识不够硬,转做软件测试的。还有一些是与计算机专业无关的也能来做软件测试。

不得不说一般的测试工作伸缩性较大,如:功能测试,懂计算机的人员能做,不懂计算机的人员按装测试用例也可进行。但你让他开发个功能试试。不懂编程,肯定做不了。我只想学测试工作入门容易精通难,如果想做一个不被“小看”的测试人员只有提高自己的技术。

如果,你但找出了bug而且提出现这个bug的原因以及告诉开发人员到哪个地方去修复它。我想你会得到开发人员的尊重。如果,你能发现一个深入系统发现一个系统潜在的bug。而你这个bug有可能会公司造成重在损失。由于你的发现挽回了这些损失,那我想你会得到上司的尊重。

 

测试人员的目标是白盒测试?

 

  好多测试人员把做白盒测试看为测试人员的终极目标。认为做白盒的测试人员是最牛的。

  我们来分析一下一个常规的流程,一个开发人员需要了解需求,根据需求编写某一功能代码。那么白盒测试人员要对开发人员的 功能代码进行单元测试。那么他也需要了解这个功能需求,了解被测功能代码,写白盒测试用例,他还需要保证测试用例代码的准确性,覆盖率等等。这个过程的成 本是很高的。

  我不否认有Junit Qunit等测试框架可以提高测试效率。那么我们经过白盒测试的功能代码是没有问题的,就能保证整个系统没有bug了。答案是否定的。那么我们后续还要进行集成测试,接口测试、安全测试,这样算下来测试成本要远远高于开发成本。对于测试团队来说,不管是整体技术能力还是人员数量都要求很高。

对于一般公司的成本与收益来讲,白盒测试由开发人员完成。因为没有人比自己更了解自己所开发的代码。那么开发人员如何做好对自己功能代码的单元测试?往下看

 

测试人员与开发人员的比例

 

  相信这也是开发人员热议的一个话题,最典型的就是拿微软与谷歌来比较,微软的测试人员与开发人员的比例是21 ,而谷歌测试人员与开发人员的比例为110 ;同样是两个牛X公司,为什么会存在这么大的差异呢?我想不会有人会认为谷歌的测试人员比微软的牛得多,谷歌一个测试人员可以干微软二十个人的工作。

公司对测试人员的定位不同

  微软的测试员人叫“软件测试开发工程师”,加上了“开发”二字,就不单单的测试黑盒那点事儿了。他们要做的事情儿很多。他们要设计测试计划、开发测试自动化软件、debug、调查研究问题。他们的测试工程师要与开发工程师一起,从产品定义(product definition)到产品开发(product development)再到产品维护(product servicing),在整个产品生命周期中,不断贡献各种建议、测试文档以及测试数据。这么庞大的工作量,不是少数测试人员能够胜任的。

http://www.cnblogs.com/fnng/archive/2011/09/06/2169206.html

  那么谷歌呢?他们的测试人员又做些什么。在Google,质量并不等于测试。“质量不是被测试出来的”,他们将测试与开 发融合,做为一个开发人员,你必须对保证自己的所做工作的质量。我的感觉有点“全民皆兵”,一个全民皆兵的民族只能被全部消灭,不可能被打到。一个“全民 皆测”的软件公司还有什么质量是保证不了的。当你上则所的时候,会发现墙上写着“今天,你测了吗?”哈哈!!

http://www.aqee.net/how-google-tests-software-part-three/

 

国内的测试国情

 

为什么国内与国外同样都是测试人员,差距咋就那么大呢?这与我们国内的测试行业“国情”有关。微软是做什么产品的,一个严重的bug对他们造成的损失是不可估量的。当然微软一开始也没意识到测试的重要性,那都是在血和累的教训中逐渐总结出来的。

反观国内,有几家公司是做微软那种产品的,如果你们公司是给政府做项目的,因为某些单位做某些项目是为了让“上面”拨款。其 实,这某些单位用不用这个系统就另说了,只要上面检查的时候有这个东西就成。你们懂的!!国内的大多数公司做的都是一些一般的项目,质量要求不高,营收入 不高,能预算到测试的费用就更少了。所以,测试人员属于配菜,不是主食。有测试人员大谈后期维护成本可能存的风险。贪图眼前利益的大有人在。淡定!国情! 国情!

 

入测不深,思绪凌乱,不知所言。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
20天前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
20天前
|
测试技术 UED
软件测试的艺术:探索性测试的力量
【10月更文挑战第6天】在软件开发的世界中,测试是确保产品质量的关键步骤。传统的测试方法往往遵循严格的脚本和预定义的路径进行,但探索性测试(ET)则提供了一种更为灵活、创造性的替代方案。通过模拟真实用户的行为和思考过程,ET能够揭示那些传统测试可能遗漏的问题。本文将深入探讨探索性测试的核心原则、实施策略以及它如何提高软件测试的效率和有效性。
|
3天前
|
测试技术
探索软件测试中的“思维侧翼”——如何以创新思维引领测试策略###
本文旨在探讨软件测试领域中,如何通过培养与运用创新思维,提升测试策略的有效性与效率。不同于传统的技术解析或理论阐述,本文将以“思维侧翼”为喻,启发读者从不同维度审视软件测试,寻找突破常规的思路与方法。我们相信,在快速迭代的软件开发周期中,灵活多变且富有创造力的测试思维,是发现潜在缺陷、保障产品质量的关键。 ###
|
4天前
|
测试技术 定位技术 UED
软件测试的艺术:探索性测试的深度与广度
【10月更文挑战第22天】在软件开发的广阔舞台上,测试扮演着不可或缺的角色。本文将带领读者深入理解探索性测试(Exploratory Testing)的精髓,揭示其在现代软件质量保证中的价值。我们将通过实际案例、生动比喻和具体步骤,展现如何像艺术家一样进行软件测试,确保产品质量的同时,提升测试的效率和乐趣。文章不仅适合初学者建立测试基础,也能帮助资深测试人员深化对探索性测试的理解和应用。
|
2天前
|
监控 安全 jenkins
探索软件测试的奥秘:自动化测试框架的搭建与实践
【10月更文挑战第24天】在软件开发的海洋里,测试是确保航行安全的灯塔。本文将带领读者揭开软件测试的神秘面纱,深入探讨如何从零开始搭建一个自动化测试框架,并配以代码示例。我们将一起航行在自动化测试的浪潮之上,体验从理论到实践的转变,最终达到提高测试效率和质量的彼岸。
|
21天前
|
测试技术
软件测试中的探索性测试(ET)实践
【10月更文挑战第5天】本文将深入探讨一种与传统脚本化测试不同的测试方法——探索性测试(Exploratory Testing,简称ET)。我们将通过一个实际案例来展示ET的有效性,并分享如何将ET融入日常的软件测试流程中。文章旨在为测试人员提供一种灵活、高效的测试策略,帮助他们更好地发现软件中的缺陷。
|
19天前
|
监控 数据可视化 测试技术
软件测试中的自动化测试实践指南
【10月更文挑战第7天】 在软件开发的生命周期中,测试是确保产品质量的重要环节。随着技术的进步和应用的复杂性增加,自动化测试逐渐成为提升测试效率和覆盖范围的关键手段。本文将深入探讨自动化测试的基本概念、实施步骤及其在不同应用场景中的最佳实践。通过对自动化测试框架的选择、脚本开发、执行及维护的详细解析,帮助读者更好地理解和应用自动化测试技术,从而优化测试流程,提高软件质量。
31 2
|
8天前
|
测试技术 开发者
探索软件测试中的自动化测试框架
在软件开发的世界中,质量是至关重要的。为了确保软件产品的质量,软件测试扮演着不可或缺的角色。本文将深入探讨自动化测试框架的概念、重要性以及如何有效地实施它们来提高软件测试的效率和效果。我们将从自动化测试的基本概念开始,逐步深入到不同类型的自动化测试工具和框架,最后探讨如何在实际项目中选择合适的自动化测试策略。
|
19天前
|
测试技术
软件测试的艺术:探索性测试的深度与广度
【10月更文挑战第7天】在软件开发的宇宙中,测试是一颗璀璨星辰,指引着质量的方向。本文将带你遨游于测试的海洋,深入探索性测试(Exploratory Testing)的奥秘,从其哲学本质到实践应用,揭示如何通过自由探索来发现软件中的隐藏缺陷。我们将一起思考如何在不断变化的软件环境中,利用探索性测试提高测试效率和效果,确保软件产品的质量。准备好,让我们启航吧!
|
21天前
|
测试技术 UED
软件测试中的探索性测试:一种创新的质量保证方法
在软件开发的生命周期中,测试阶段扮演着至关重要的角色。传统的软件测试方法,如自动化测试和回归测试,虽然在一定程度上保证了软件质量,但它们往往依赖于预定义的测试用例和脚本,可能无法覆盖所有用户场景和边缘情况。为了克服这些限制,探索性测试作为一种创新的质量保证方法应运而生。本文将深入探讨探索性测试的概念、优势以及如何有效地实施它,以帮助读者更好地理解和应用这种测试技术。