发布新日志

  • Python进阶之路三(列表,字典,部分控制流)

    2018-11-13 11:30:32

    2018年11月13日
    1.代码编译注意小点:
    文本最上方添加# code=utf-8(预防格式异常,这个我操作的时候遇到该问题)
    2.列表list []
    3.列表增加list.append()
    4.字典{}
    对应1-4代码学习实例:
    # code=utf-8
    list_A=["1HBZ","OCEAN","xyzc","chsqb"]
    print(list_A[0])
    c=len(list_A)
    print(list_A[-1])
    print(list_A[c-1])
    nfsdqc="nfsdqc"
    list_A.append(nfsdqc)
    #字典
    print(list_A)
    dict_A={}
    dict_xyzc={"name":"xyzc","sex":"male","city":"shenzhen","hobby":"boy"}
    print(dict_xyzc)
    执行结果:
    1HBZ
    chsqb
    chsqb
    ['1HBZ', 'OCEAN', 'xyzc', 'chsqb', 'nfsdqc']
    {'name': 'xyzc', 'sex': 'male', 'city': 'shenzhen', 'hobby': 'boy'}
    5.控制流 if elif else
    money=700000
    if money>100000:
        print("去美国旅游")
    elif money>50000:
        print("去云南旅游")
    else:
        print("家里蹲")
    6.冒号:后面的代码行注意缩进,缩进代表范围内,后续定格代表进入另外一个范围;
    7.多行注释使用''',也可以选中所需要注释的代码行,点击ctrl+?,所选内容同时采用#注释(小窍门)
    8.控制流for in 表示循环  if else表示判断 break表示中断
    for循环-遍历下标-通过下标来获取数据
    for循环-遍历列表的值-直接取值
    在for循环中使用and和or,break
    square_account_list=[
        {"name":"John","age":22,"contury":"England","sex":"male","height":180,"weight":160},
        {"name":"Tom","age":30,"contury":"America","sex":"female","height":180,"weight":150},
        {"name":"Dick","age":27,"contury":"England","sex":"male","height":187,"weight":150},
        {"name":"Lucy","age":28,"contury":"America","sex":"female","height":180,"weight":150},
        {"name":"David","age":30,"contury":"America","sex":"male","height":120,"weight":150},
        {"name":"Bill","age":30,"contury":"America","sex":"male","height":130,"weight":150},
        {"name":"Jian","age":18,"contury":"China","sex":"female","height":180,"weight":150}]
    # first_one=square_account_list[0]
    # if first_one["name"]=="David":
    #     print(first_one)
    # else:
    #     print("他不是David")

    #for循环-遍历下标-通过下标来获取数据
    #[0,1,2,3,4,5,6]
    for index in range(0,len(square_account_list)):
        person_name=square_account_list[index]["name"]
        if person_name=="David":
            print(person_name)
            break
        else:
            print("他不是David")
    '''
    #for循环-遍历列表的值-直接取值
    for item in square_account_list:
        if item["name"]=="David":
            print(item)
         
        else:
            print("他不是David")
    '''
    '''
    for item in square_account_list:
        if item["age"]>20 and item["sex"]=="female":
            print(item["name"])
        else:
            print("====")
    '''
    for item in square_account_list:
        if item["age"]>20 or (item["sex"]=="female" and item["height"]>160):
            print(item["name"])
        else:
            print("====")
    执行后的结果:
    1HBZ
    chsqb
    chsqb
    ['1HBZ', 'OCEAN', 'xyzc', 'chsqb', 'nfsdqc']
    {'name': 'xyzc', 'sex': 'male', 'city': 'shenzhen', 'hobby': 'boy'}


  • Python进阶之路二编辑代码配色和选中配色设置

    2018-11-09 14:33:55

    1.代码颜色调整,根据自己的喜好选择对应的颜色,设置如下:
    Window--Preferences-PyDev-Editor位置,选择对应的格式进行修改,样式参考附图1;
    2.调色2参考该博客
    3.设置eclipse的背景底色
    https://jingyan.baidu.com/article/a378c960a41524b329283040.html(百度)
    4.设置默认模板
    点击 Window—Preferences-PyDev-Editor-Templates可以通过这个实现;
    5.举例设置默认模板:

    eclipse上进行每次进入后书写日期和作者名字进行设置,操作方法:

    1)点击已创建的工程Python-new-pydev module;

    2)填写name-finlish-empty-config available templates;

    3)选择 empty-edit,pattern处修改作者的名字,点击OK,则完成整个设置;


  • Python进阶之路一测试环境安装配置

    2018-11-09 14:27:02

    2018年11月8日开始搭建测试环境(Python+jdk+eclipse+PyDev);
    1.安装Python-3.6.4-amd64,要把add选项勾选;

    2.下载JDK进行安装;

    3.配置环境变量;

    方法:

    1)计算机-属性-环境变量;

    2)点击新建,新建变量JAVA_HOME;

    3)点击系统变量path,增加变量值C:\Program Files\Java\jdk-10.0.2\binjdk的存放目录)

    4.http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/neon/3/eclipse-jee-neon-3-win32-x86_64.zip&mirror_id=1248

    从该网站上下载eclipse 安装;

    5.按照https://blog.csdn.net/leejeff/article/details/80432103进行安装配置

    Installhelp里面去查找;

  • fiddler学习遇到问题解决方案

    2018-10-22 15:21:08

    2018.10.19解决PC端安装fiddler证书不成功的问题,通过下面链接解决;
    https://www.cnblogs.com/jayshsoft/p/7503171.html
    解决手机配置代理后无法上网问题
    https://blog.csdn.net/m0_37554415/article/details/80434477?utm_source=blogxgwz1
    2018.10.20fiddler增加服务器IP地址和web环境

    Fiddler显示请求服务器的ip及系统环境的配置方法:

    1)打开Rules——>Customize  Rules

    2)找到如下这段代码:

    static function Main()
    {
    var today: Date = new Date();
    FiddlerObject.StatusText = " CustomRules.js was loaded at: " + today;
    // Uncomment to add a "Server" column containing the response "Server" header, if present

    在这一行后面添加如下代码:

    // 显示服务器web环境
    FiddlerObject.UI.lvSessions.AddBoundColumn("Server", 50, "@response.server");
    // 显示服务器IP地址
    FiddlerObject.UI.lvSessions.AddBoundColumn("HostIP", 50, "x-hostIP");
    }

    设置后重启fiddler,效果如下:


  • 软件测试工程师的“三十六变”

    2012-05-16 15:29:38

    其实这篇博文是写出来想给大家分享一下测试工程师的职业发展的,显然是老话题了,因此我假设本文的目标读者为:
    1. 想进入软件测试领域,还不太清楚实际的软件测试长什么样的童鞋
    2. 刚上走上测试这条路不久,接触过一些实际项目了,但还没“拧”上道的童鞋。
    3. 做了一段时间测试,也明白了软件测试是怎么回事,想继续从事测试行业,但是对前途感觉很茫然的童鞋。
    4. 做了一段时间测试,感觉测试不是自己所想要的职业,仍然想在IT行业发展,但想转行的童鞋。
    如果您不属于这其中的某一类人,或许这篇小文并不适合您,请不要浪费你的时间了,谢谢。

    职业发展是个老生常谈的问题,但一直都是一个很火的话题。随便翻翻,各个关于软件测试的坛子里,都不乏探讨软件测试工程师职业发展的帖子,为什么我还要多写这么一篇呢?好吧,先来说说这篇博文的缘起:在我将近八年的职业软件测试生涯中,遇到过不少刚刚进入测试领域的新人,也有不少做过三四年或者五六年的“老鸟”,不管做得好的还是不好的,我觉得都可以用两个字来形容大多数人的状态:“忙”与“茫”。前一个忙可能适合于大部分刚踏入测试领域的新人,他们兴趣勃勃,对一切新鲜事物都充满着好奇,总想学习更多的技术,参与更多的测试,好早点积累起属于自己的测试经验。后一个“茫”,可能更适合做了几年测试的所谓“老鸟”,他们经历了一些项目,也积累了不少的经验,不管是否领悟了测试的“真谛”,他们中的大部分人都已经习惯了目前的工作状态,成了熟练工种。或许在纠结着究竟以后的路该怎么走,究竟是学技术还是做管理?学技术的话,什么样的技术学了才会让自己在这个领域更具竞争力?做管理的话,自己具备做管理的特质吗?又或许自己根本不适合做测试?甚至于不适合做IT?可转行的话,隐藏着巨大的机会成本,风险确实很大,用什么样的职业来转行才更靠谱呢?“菜鸟”也终究有成为“老鸟“的那一天,所以这些问题是我们每个人都会遇到的,有句话说得非常好:二十岁的迷茫将导致三十岁的恐慌,而接下来面对的是四十岁的无奈。不管你现在多少岁,如果你现在还没有定下自己的目标,可能看到这句话都会有这样的感觉,迷茫、恐慌和无奈,每个词都不是什么褒义词,没人想把它们放在自己的身上。正因为有这样一些问题,这么多的无奈,才有了这篇文章。我想通过这篇文章,和大家分享一下我这么多年工作之中对测试职业生涯发展的思考,更重要的是,我同时还会给大家提供一些以后不做测试之后该如何华丽”转行“的意见供大家参考,”三十六“变究竟应该怎么变,我想这也是我这篇文章的价值所在。

    本文准备分两大部分来讲不同方向的职业生涯发展之路。第一部分当然就留给那些想继续留在测试行业发展的童鞋们,讲讲如果你想在测试行业继续奋斗下去的话,为了你的“钱途”,你应该往哪方面发展。第二部分应该算是其他文章讲得较少的内容,那就是如果你干了一段时间觉得你不愿意再从事测试行业,想从一些相关的职业转行离开测试领域,那么请着重看这部分。

    一、测试行业的职业发展之路
    其实这部分是几乎所有关于测试的职业发展文章都会探讨的部分,相信各位看官都已经耳熟能详了。不过为了照顾本文的完整性,也便于大家比较,我也将我的经验和观点分享给大家,以作参考。如果有童鞋有更好的观点,欢迎分享和探讨。

    1. 技术方向
    就技术方向的职业发展之路,我非常赞同之前看过的测试大牛sincky的一篇文章里说的,如果你打定主意就想往测试技术方向去发展,做一个技术型的牛人,那摆在你面前的就只有三条路:1. 自动化测试工程/架构师 2. 性能测试工程师 3. 行业性测试专家。你几乎没有其他选择,甭管你的领导怎么忽悠你,做手动测试大量需要劳动力也好,自动化测试现在还没有大规模发展起来也罢,如果你只会手动测试,并且你所测试的软件也没有什么特别值得深究的方面的话,那么可以告诉你你的测试生涯钱途堪忧,说白了也就是没有什么核心竞争力,哪天boss们想砍人了,那你就是第一个。有些童鞋可能会说了,这个不对吧,看咱项目里不是还是80%以上的人都是做手动的嘛,为什么你却说自动化/性能测试才更具有核心竞争力呢?先说自动化吧,确实,就目前中国测试业的现状来看,80%以上的IT公司里面80%以上的测试人员都在做着黑盒的手工测试,这个假象确实麻痹了一些人,使得大家以为既然大部分人都在做着手工测试,那我也不需要去学习自动化或者性能测试了。就算很多已经实施了自动化测试的公司,也在痛苦地摸索着如何提高自动化测试的效率,如何能够真正提高系统的性能。但不管现状如何,很多公司也必须重视自动化测试,原因有二:1. 商业上的需要。很多公司,特别是测试外包公司,销售们在推销自己公司的团队和产品的时候,测试的自动化程度都是一个重要的指标,这年头说测试不说自动化都显得自己“out”了,所以自动化测试能不香吗?2. 项目需要。很多管理职位的人,如果不是做测试技术出身,都会非常迷信自动化测试的神力,把自动化测试当成测试的银弹,战无不用,用无不胜,所以相对来说,会比较重视自动化测试的人。对于性能测试和行业测试专家来说,那就是物以稀为贵了。真正能做好性能测试,并能够通过性能测试结果分析出性能瓶颈,提出性能改进方案的人,寥寥无几。行业测试专家也一样,比如电信、医疗、ERP测试,能够精通业务,真正能够利用对业务的了解改进测试效率,也是数都能数出来的,你说他们的钱途用得着担心吗?呵呵。

    好了,接下来再来说说这三个职位各需要什么样的具体技能吧(可能不是很全,欢迎各位看官补充)。

    1.1 自动化测试工程师/架构师

    基本能力要求:
    --熟悉自动化测试的理论及常用框架
    --熟练使用常见的自动化测试工具并能够根据项目实际需要选择合适的工具或者开发相应的工具
    --熟悉项目软件架构及层次结构,能够利用自动化测试工具或自定义的框架提高自动化测试的覆盖率和复用率
    --熟悉脚本类及一到两种常用的编译型编程语言,网络协议及linux平台

    1.2 性能测试工程师

    基本能力要求:
    --熟悉性能测试过程模型和过程
    --熟悉各种常见的应用协议
    --熟悉性能测试工具的原理及使用
    --能够根据实际项目配置测试环境,选择合适的性能测试工具或开发性能测试工具
    --能够通过对被测系统的分析,对性能测试场景进行分析和选取
    --执行性能测试并根据结果分析性能瓶颈,提出性能提升改进的建议

    1.3 行业测试专家

    基本能力要求:
    --精通某个业务性较强的行业的业务流程及关键技能,如医疗,通信,ERP等特征较明显的行业。(如果你是测一般的网站或者是手机系统之类的话,还是省省吧,这个不是这里指的行业专家)
    --能够根据对本行业业务的了解和对软件测试的了解,对组织内的软件测试流程和方法做出优化,提高测试效率,节省测试成本

    2. 管理方向
    谈完了技术,当然就该谈谈被无数人所追崇的管理职位了。当然了,能管别人,发号施令,谁不喜欢呢?古人云:学而优则仕,就是这个道理。可职业发展这个金字塔上,能最终站上管理职位的那个塔尖的人又有多少呢?管理职位虽然看似很爽,很诱人,但绝不是每个人都适合做这个岗位的。也不是说你做了若干年的技术,成了技术大牛,你就一定能去管项目管人,毕竟管理主要是跟人打交道的活,你虽然能把电
    脑弄得服服帖帖,但不一定你去管人的时候,人就会服你,所以其实谈到做管理,最关键的就不是技术了,用两个比较时髦的词来说,关键就是“沟通”和“协调”,你得会跟客户去做沟通,你得会跟其他人去做协调,这是做管理的先决条件。如果你觉得自己不善言谈,不想时时面对众人,那兄弟你还是跳过这一节,继续看看其他部分吧。

    那么就从做管理来说又可以有什么样的职位选择呢?撇开高层管理什么CXO的不谈,就一般的管理而言,可以选择的管理职位有两类:

    2.1 项目经理

    基本能力要求:
    --较高的沟通和协调能力。一方面你要能把客户哄好了,另一方面你得牢牢取得团队的支持,你要没点沟通能力和协调能力,能行吗?
    --熟悉项目管理的相关知识,如果能够取得PMP证书(项目管理师认证)是最好的,因为那至少可以证明你从理论上非常专业地学习了项目管理的基本概念,熟悉了项目管理的五大过程组及九大知识领域(详细内容请参考相关PMP书籍),有一定的项目管理经验,理论上是没问题的了。
    --技术方面呢,不需要你太精通技术,但作为IT行业的项目经理,我一直都认为没有任何的技术背景其实是很难胜任这个行业的管理职位的,因为技术性确实太强,人家谈论实现的时候,你啥都听不懂,是不是挺尴尬的?关键是你还得做出决策。如果打个比喻来说明究竟项目经理需要掌握技术到什么程度的话,可以用两个词:一平方公里和一米。你的知识面必须得有一平方公里宽,但这些知识的深度只有一米。什么都知道一点,什么都不精,或许对做技术的人来说不是什么好事,但如果你是做管理的,那恭喜你,兄弟,继续干吧。

    2.2 测试经理

    基本能力要求:
    --参照项目经理的第一条,必须滴~~
    --你不需要有特别多项目管理理论基础及经验,但你必须精通软件测试的方方面面,从流程、方法、工具、框架、组织等等,你都必须了解,并最好有实际的项目经验,能够随时指导测试团队的工作,对团队里面的问题提出一定的参考意见和解决方案,对团队的测试流程和方法做出改进。

    二、从测试行业转行的选择
    好了,看了上面的那些测试行业本身的职业发展选择,有的童鞋可能会感觉不蛋定了,压力山大了,哎呀,本人天生就是编程白痴,书看了不少,什么语言之类的人家说起来或者看着书上感觉都会,可自己一坐到电脑面前打开IDE就茫然,思路全无,硬是敲不进一行代码,我怎么可能做自动化?我怎么发展?我从事的测试就是测测手机上的游戏,我怎么做行业测试专家?说沟通和协调吧,我自己都是宅男宅女,选择性话痨,最烦跟不熟的人(客户)多说一句话,我怎么沟通?怎么做管理?得,如果您是属于这类人,其实说实话,软件测试这个职位可能并不是您的菜,您可能还需要重新考虑一下更适合你的职位。当然我们都知道,转行的机会成本是相当高的,本来做了三五年软件测试,突然让你去做医生或者建筑师,那估计谁心里都没底,除非您就是一天才。综合比较来看,比较保险的办法应该是继续从事IT行业,但不做软件测试,转到比较相关的行业,再看看自己是否适合,这样做的机会成本会低很多,风险相对较小。那么什么样的职业选择是和软件测试相关的呢?它们又应该具备什么样的技术技能呢?接下来本人会为大家一一道来。当然,这些意见都是根据我自己的一些浅薄的经验,无奈当初楼主在一些小公司被劈成几半用的时候,除了测试外,几乎软件工程里面该有的一些主要职位都做过了,如需求分析,开发,售前,售后等等,所以才会有这些结论出来,下面的内容关于能力方面的要求是最基本的,欢迎大家补充,个人见识有限,这里权当抛砖引玉了,呵呵。

    1. SQA
    说到SQA,其实很多公司现在都已经跟软件测试是一个概念了,测试人员既做QA又做QC的情况非常普遍,只有一些规模较大,流程确实非常正规的公司还保留有专门的SQA的职位,这里只是权当做个参考和选择之一。或许有不少童鞋会对QA和QC的区别心存疑惑,甚至有不少人根本不知道这是两个不同的职业,那么他们有什么区别呢?我这里随便解释下。如果用一个比喻来形容QA和QC的关系的话,我觉得用法官和警察的关系来形容是比较贴切的。法院的法官制定法律,但他们不亲自去抓罪犯,而警察呢,则依据法院制定的法律去判断某人是否违法,是否是应该被抓捕的罪犯,并亲自去把他们抓住。QA就如同法官,他们制定了一系列的流程,工作的输入输出,哪些文档,如何审计测试的效率,如果改进测试流程,都是他们在掌握。而QC,就是测试人员,他们则在QA的流程下,运用各种测试的方法去抓bug,尽量减少产品的缺陷,保证产品的质量。所以SQA的工作比较适合不太喜欢亲自去找bug,但喜欢从比较high level的角度去看待问题的人,说白了就是动手能力不太强,但确实对测试还比较感兴趣,对各种质量理论感兴趣的人。

    基本能力要求:
    --熟悉常见的质量控制体系及软件项目成熟度模型等,如CMM/CMMI,6 sigma,ISO9000,RUP等等

    2. 售前工程师
    为什么说测试工程师同样也适合转售前呢?因为测试工程师其实是最了解产品需求和产品功能的那个人,甚至他比模块化的开发人员还了解公司的系统或者产品。在清楚系统的功能的前提下,很容易就能够针对各种客户的需求提出相应的解决方案,再加上如果您有较好的文字功底或者是沟通技巧,那其实售前工程师是一个相当好的转行的方向。当然,这个职位也特别适合那些想做销售但又上了测试这条船的童鞋,这可是一个很好的跳板啊,呵呵。

    基本能力要求:
    --熟悉产品的使用及实施,能够根据客户的需求提出相应的解决方案
    --较好的沟通和表达能力
    --较强的文字功底和报告功底

    3. 用户体验师
    用户体验师或许还不是一个很火的职业,但根据当前和以后的软件业的趋势,火是必然的了。因为用户使用产品,除了功能外,越来越重视的是用户体验,功能谁都有,那当然是谁的好用就用谁的了,比如最近热得烫手的苹果产品就是最好的例子。当然用户注重用户体验了,那当然各大软件公司就必须得重视了,自然用户体验师就应运而生。其实很多大公司早已有专门的用户体验师的职位,比如苹果,乔布斯就可以说是苹果的首席用户体验师,同样国内的如百度腾讯等大公司也都有,而且腾讯的马总也是首席体验师,任何新产品他都会亲自使用并提出改进意见,由此重要性可见一斑。那么如何又扯到跟测试这个职业相关了呢?大家想想,平时我们在做诸如易用性测试,界面UI测试等等,遇到用户体验不好的,或者给用户操作带来阻碍的东东是不是也应该算是bug呢?所以我们也可以说是对用户体验有足够的了解了,只是对用户体验师这个职位来说,还不是很专业罢了。那么要成为专业的用户体验师,我们又应该具备什么样的能力呢?

    基本能力要求:
    --具备较丰富的UI设计经验和较强的设计能力,并且对用户体验较为敏感。
    --具备人机交互工程学,人体力学等专业知识,并且具备一定的用户体验测试经验。

    4. 需求分析工程师
    其实做过测试的童鞋都应该知道,在项目里面,除了客户之外,可能就是测试团队对项目需求是最了解的了。大家可以说天天都在和需求打着交道,因为需求就是我们做一些测试的依据。随着很多公司开始应用敏捷模式来进行软件开始,可能传统意义上的需求分析工程师的数量正在减少,取而代之的是测试人员在团队中担当了需求分析和功能建模的角色。但不要担心,还是有很多公司对需求分析有专门的需求的,当然,你如果是有需求分析师证书的话,那就更好了。

    基本能力要求:
    --了解软件项目需求分析过程,具备需求建模能力及系统用例分析及设计能力,能够使用uml建模语言建模。
    --较强的沟通,交流及理解能力,要善于引导客户说出真正的需求或者理解客户真正的需求。

    5. 开发工程师
    这个就不说了,这个职位适合于对编码确实感兴趣的童鞋,可以考虑从测试转开发,尽管现实中一般都是开发转测试,你懂的,呵呵。

    基本能力要求:
    --代码编写能力较强,愿意做一个码农或者苦逼的程序猿

    6. 售后及技术支持
    相信每一个测试工程师测完被测系统后,你都敢拍着胸脯说,OK,我现在对这个系统的功能是最熟悉的了,哪里最容易出问题,哪里该注意什么,可能对于你来说都不在话下,甚至你还可以写出你负责测试那个模块的用户手册。没错,这就足以说明你已经胜任售后及技术工程师的角色了,如果你确实不愿意再去做测试,不妨也考虑一下这个职位。

    基本能力要求:
    --非常熟悉产品的各项功能及使用,并具备较强的解决问题的能力
    --较强的沟通和理解能力。要跟客户打交道的岗位,必须滴的哈。。。

    7. 软件测试培训及咨询
    其实这个职位是比较适合资格较老的测试工程师,他们已经对软件测试烂熟于心,技术能力较强,并且可以灵活变通,了解各种测试工具及方法,升职无望或者不想再从事具体的测试工作,可以考虑这个方向,并且从现在的待遇来看,培训及咨询行业的行情还是很不错的哟,呵呵。

    基本能力要求:
    --精通软件测试理论及具备一定的项目实践经验,熟悉各种主流工具、流程及方法等。
    --较强的沟通、表达及引导能力。这条其实非常重要,你想想,在众人面前,你讲不出来,怯场,那什么都完了。
    --能够根据企业或学员的具体情况给出理想的解决方案或培训方案。

    好了,我能想到的就这么多了。显然题目比较夸张了,这里给出大家的职业发展选择远远没有“三十六行”那么多,但我想应该能够给到大家一些新的idea,至少我很少看到有人写到关于非软件测试行业本身应该有哪些比较“靠谱”的职业选择的。其实早就想把这篇文章写出来,现在终于如愿了。不管怎么说,我都希望各位看官能够在看完本文后,不管你仍然选择奋战在测试战线上也好,还是准备转行也好,都能够对自己将来的职业发展有一点点的想法和方向,那么我觉得你就没有浪费这么三五分钟看完本文,我就没有浪费那么三五个小时完成本文,呵呵。当然,我也希望借由这篇短文,大家可以谈谈自己心目中理想的职业发展方向,毕竟我们都不是高帅富,有个好的职业生涯发展是每个人都希望的事。

    转载

  • BUG生命周期和管理

    2011-12-12 10:19:20

     1、BUG的产生

      1) 软件的复杂性:功能越多,软件越复杂。

      2) 程序员的错误:过于疲劳,不守规矩,过于热心,心不在焉。

      3) 需求的变化:需求变化的后果会造成重新设计与日程调整,一个需求变化频繁的项目或者产品是没有任何测试价值的。

      4) 时间的压力:时间是一种宝贵的资源。

      5) 文档贫乏:要有良好的先文档后实现的习惯。文档代表着一种特殊的记忆,没有它的存在对人对己都不利。

      6) 软件开发工具:实际上,现代的开发工具对整个软件质量尤其是可靠性并没有什么重大的影响。

      2、BUG的种类

      1) 需求阶段的BUG

      2) 分析,设计阶段的BUG

      3) 实现阶段的BUG【主要发生在开发人员的身上】

      4) 配置阶段的BUG

      5) 短视将来的BUG

      6) 静态文档的B U G

      3、BUG的生命周期

      1) BUG的初始状态(Unconfirmed&New)

      2) BUG的分配状态(Assigned)

      3) BUG的重新分配状态(Ressigned)

      4) BUG修复状态(Resolved&Fixed)

      5) BUG验证状态(Vertified)

      6) BUG重新打开状态()

      7) BUG关闭状态()

      4、BUG的严重等级

      1) 危机的(Critical)

      2) 重大的(Grave)

      3) 严重的()

      4) 锁定的(Blocker)

      5) 重要的(Important)

      6) 常规的(Normal)

      7) 轻微的(Minor)

      8) 微不足道的(Trivial)

      5、BUG处理的优先等级

      1) 立刻修复(Immediate)

      2) 尽快修复(Hight)

      3) 正常修复(Normal)

      4) 考虑修复(Low)

  • 转载:测试人员参与评审的目的不只是为了学习

    2011-04-13 17:23:28

    测试人员尽早参与项目,是软件测试中的一个基本原则。但是,在测试实践中,测试人员的尽早参与常常是为了学习,例如:理解了测试对象之后进行测试用例的设计,而将尽早发现其中的问题和缺陷的目的放在了较低的优先级。这实际上很大程度上违背了评审的初衷。

      下面通过笔者实际经历的一个案例,阐述这样的一个观点:测试人员参与评审,其最主要的目的是尽早发现其中的问题和缺陷;当然学习也是一个目的,但是学习的目的是为了更好的理解和设计测试用例,而设计的测试用例,其主要的目的是更加有效的发现测试对象中的缺陷,以提高产品质量。而在测试执行过程中发现和修复缺陷的效率会比评审低的多,而成本将高的多,该方面的信息,可以参考博客中的另一篇文章“用数据说话:评审如何降低成本、提升质量和帮助过程改进”。

      案例中功能的简单描述:登陆某个系统,例如:某个网站,首先需要创建不同权限的用户。不同权限的用户,其对系统操作的内容是不一样的。本案例中,用户的权限UAP(User Access Privileges)分别定义为CONF、PROV、ADMIN、DEBUG和READ五种类型。

      针对用户权限UAP的选择,系统的需求是这样描述的:创建的用户UID(User Identifier),可以为它们分配不同权限的UAP。但是,每个用户的权限UAP都至少包括READ权限,即每个用户都需要有READ权限。图1是用户权限UAP进行选择和删除的简单示意图。

    图1 用户的UAP选择示意图

      在开发人员实现该功能的过程中,包括图1的界面设计上,尽管测试人员都参与了评审,但是测试人员由于时间、资源和理念方面的原因,仅仅只是定位在功能的学习和理解上面。等开发人员将功能提交给测试人员之后,测试人员在测试过程中发现了下面的几个缺陷:

      ● 默认得UAP权限READ可以被删除,即在图1中,右边方框内的Read-only(READ)可以被移除;

      ● 假如在修改用户的属性时候,再选择一次Read-only(READ),那么修改之后的用户权限中会出现两个Read-only(READ)的条目,如图2上半部分所示;

      ● 假如在修改用户属性的时候,只选择了除Read-only(READ)之外的其他权限UAP,那么修改之后的用户权限没有了Read-only(READ),如图2所示的下半部分;

    图2 用户的UAP缺陷示意图

    根据系统需求中的描述,每个用户的权限都至少包括Read-only(READ),因此,上面的3个问题都应该确认为缺陷,测试人员分别都提交了缺陷报告。

      在项目结束之后的总结会议上面,笔者就针对该功能的实现和GUI提出了自己的想法:假如在开发人员具体实现阶段,测试人员将评审的目的更多的放在发现缺陷上面,开发人员尽早修复其中的问题,那么该功能的实现可以更加简单高效,而测试人员后期的工作量也可以大大降低。笔者的建议包括:

      ● 根据需求的描述,Read-only(READ)应该作为每个用户UID必须具备的权限,因此将Read-only(READ)作为每个用户的默认值,不允许进行增加、修改和删除等动作;

      ● 根据上面的建议,在该功能的图形化,如图1所示中,将Read-only(READ)选项移除,因为改选项已经通过内部代码实现了,不需要操作人员进行选择。

      假如测试人员在评审过程中发现了上述的问题,并根据上面的建议开发人员进行了修复,那么,在软件实现过程中,可以获得下面几个好处:

      ● Read-only(READ)作为每个用户的默认值,不允许增加、修改和删除,那么,在图1的示意图中直接删除Read-only(READ)选项,可以简化示意图;

      ● 按照上面的思路,代码中就可以省略针对Read-only(READ)异常处理,例如:在修改的时候,不需要判断用户是否重复选择了Read-only(READ)选项,或者没有选择Read-only(READ),直接可以节约开发人员的代码异常处理的工作量;

      ● 而对于测试人员,由于前期参与评审工作,发现了其中的一些缺陷,提高了代码的质量,可以减少后续的测试工作量;

      假如测试人员、系统人员和开发人员在实现该功能之前,认真仔细的评审了具体的实现,那么,我相信上面碰到的问题就可以避免在系统测试过程中才被发现。另外,系统人员、开发人员和测试人员在针对该功能的评审过程中,除了可以避免将这些问题和缺陷引入到工作产品中之外;还可以帮助大家对功能的实现和期望结果有了更好的认识,并更加容易达成一致。这是不是可以更好的实现在整个团队内部的知识共享呢?

  • SQL安全注意事项列表

    2011-04-12 13:22:07

    导读:使用集成化安全模式,OS安全性可以大大地简化管理工作,管理员不需要再同时管理两个独立的安全模型。这样还可以使连接字符串中不包含密码。SQL安全是数据库管理员最为重要的工作之一,下文中总结的注意事项希望大家在以后的工作中都能够足够重视。

      1) 花点时间去审计SQL登录密码的有效性以及密码安全性。

      使用以下代码检查无效密码:

    Use master
    Select name,
    Password
    from syslogins
    where password is null
    order by name

      检查密码安全性的强弱有很多免费和付费工具,SQLPing2就是一个免费的工具,可以用来检查密码的有效性和安全性。

      2)经常检查群组和角色成员身份

      虽然SQL Server安全性模式有很多改进,但是它也同时增加了一层额外的权限,我们必须对此进行监督,确保每个成员的权限符合其成员身份。还有的情况就是用户在企业里的身份已经发生改变,但是SQL Server的权限结构还没有做出相应的调整。

      3)保证SQL Server的物理安全性

      把SQL Server锁在门后,如果你正在使用它,就把钥匙锁藏起来。因为坐在server前的人总有会钻空子的。

      4)重写应用程序,使用能够更好地定义用户的存储程序和视图

      这样做可以尽量减少提供直接访问表格权限的需要。程序开发员能够更好控制数据存取的情况。

      5)启用记录所有用户登录事件

      你可以通过以下代码完成这一点:

      xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer',N'AuditLevel', REG_DWORD,3

      6)检查master..Sp_password中是否含有trojan代码

      把你的生成脚本与全新安装程序的过程默认脚本进行对比。把这些代码保存在方便查阅的地方。

    7)检查master..Sp_helpstartup中是否含有trojan程序

      确保这里没有后门程序。使用Sp_unmakestartup来清楚所有流氓程序。

      8)除非绝对有必要的情况,否则禁用SQL Mail功能

      开放这个功能无疑给黑客另一个传播木马、病毒或者给攻击服务器使其不能提供服务的途径。这个功能本身并没有任何害处,但是它能够被黑客所利用。

      9)清除数据库里的访客用户,确保没有未授权用户滥用数据库

      这个是默认设置,但是要警惕一些dbo在权限控制上出现松懈的情况。唯一的例外情况是当主数据库和tempdb数据库需要作为访客帐户登录时。

      10)确保所有SQL Server数据和系统文件都安装在NTFS分区里

      如果有人需要访问OS,确保需要有必要的权限设置,防止出现重大问题。

      11)需要使用SQL Server服务时使用低权限的用户帐号,而不要使用LocalSystem或管理员帐号。

      这个帐号应该设置为最小权限(最好是本地用户),而且应能够在出现漏洞的情况下抑制服务器受到攻击。注意如果使用Enterprise Manager或SQL Server Configuration Manager (SQL 2005)来做改动的话,文件、注册和用户权利的SCLs都会自动完成。

      12)设置安全性强的密码来保证“sa”帐户的安全

      适用于使用SQL Server和Windows安全模式的情况。尽可能使用Windows Only模式,这样你就不用担心有人会强制使用“sa”帐户。当然,就算做到这一步,最好还是设置一个安全性强的密码,因为难免不会出现有人改变系统模式的情况。

      13)只选择企业必需的网络连接库

      如果企业的SQL Server只是本地使用,为什么不禁用所有的网络连接库,只使用共享内存来访问SQL Server呢?只用'(local)'作为服务器名称。如果你的SQL Server需要连接其他服务器,使用TCP/IP netlib,然后决定是否需要SSL。

      14)确保使用最新版的操作系统和SQL Server 服务包/热补丁

      毫无疑问,这是安全事项里不可能会缺少这一项。只要在你的SQL Server里执行"select @@version"。

  • 软件测试面试题:如何测试一个水杯

    2011-04-08 10:52:19

    (声明:以下是转载的别人的帖子,但是别人也是转载的却未注明出处,所以我也找不到原文出处)

    考官从办公室(面试 现场)随意选取一个简单物品,假定是一个喝水的带广告图案的花纸杯,让应聘人对它设计出尽可能多的测试 用例。

    测试项目:杯子

    需求测试:查看杯子使用说明书

    界面测试:查看杯子外观

    功能度:用水杯装水看漏不漏;水能不能被喝到

    安全性:杯子有没有毒或者细菌

    可靠性:杯子从不同高度落下的损坏程度

    可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用

    兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等

    易用性:杯子是否烫手、是否有防滑措施、是否方便饮用

    用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述

    疲劳测试:将杯子盛上水(案例一)放24 小时检查泄漏时间和情况;盛上汽油(案例二)放24 小时检查泄漏时间和情况等

    压力测试:用根针并在上面不断加重量,看压强多大时会穿透

    跌落测试:杯子加包装(有填充物),在多高的情况下摔下不破损

    震动测试:杯子加包装(有填充物),六面震动,检查产品是否能应对恶劣的铁路\ 公路\ 航空运输

    测试数据: 
    其中应用到:场景法、等价类划分法、因果图法、错误推测法、边界值法等方法

    期望输出: 
    该期望输出需查阅国标、行标以及使用用户的需求

    说明书测试:检查说明书书写准确性


  • 软件测试面试:如何测试一支笔(铅笔,钢笔,中性笔)

    2011-04-08 10:52:19

    PS:以下都是从网上搜罗来的,版权比较难注明,主要目的是分享及讨论。

    如何测试一支铅笔?

    1,功能测试 能不能称作一只笔 是否能书写..
    2,性能测试 写起来是不是很流畅,压力测试 用多久能用完..可对比其他上市铅笔 有什么优点。
    3,用户体验 找适当人群组织群众使用 并跟踪记录使用后反应出来的效果。
    4,破坏测试 多大的力气可以折断啊...等等啊
    5,安全测试 铅笔芯是不是有毒,笔的木质是不是在折断时 弄坏手之类的。
    6,外观审视 一般审视 这种设计是不是耐看 颜色是不是用户可以接受。

    如何测试一支黑色签字笔

    答案一:1,功能测试(能不能完成一支笔的需求)
    2,性能测试(压力测试,看用多久能用烂,把它绑在电动机上划纸盒)
    3,用户体验(找尽量多的群众,搜集FeedBack)
    4,破坏测试(看在几楼掉下会摔坏,记录高度和地面硬度,烧,看燃点是多少,煮,看煮完坏不坏...)
    5,安全测试(潜入机场,把这个扔在飞机进气孔里,看能不能引起爆炸;让白鼠吃笔心,看是否中毒...) 

    6,外观审视 一般审视 这种设计是不是耐看 颜色是不是用户可以接受。

    (很多人都评价这个答案好,我觉得那个破坏性测试和安全测试有点太离谱了吧)

    答案二:1,写写出不出水,是不是黑色,能写多长时间多少字,时间长了笔头会不会出问题(比如像圆珠笔一样漏油的问题),在不同的纸上写出的效果是怎么样,会不会把纸划坏
    2,笔杆是粗是细,抓在手上舒服不舒服,写时间长了会不会手长茧
    3,扔地上再拿起来看看能不能再写,如果是圆的放桌上容不容易掉到地上,不带套长时间放在外面还能不能再写,
    4,市场上容易不容易买到能装进这支笔的笔芯
    5,放在特别冷和特别热的地方能不能写
    6,笔杆是不是塑料的,和其它东西比如橡皮放在起会不会出问题(粘在一起)
    7,能不能别在衣服上,别在衣服上时看上去是不是很帅
    8,能不能被人容易地掰断,踩碎,掉地上被踩碎是很可能发生的
    9,当垃圾扔掉以后会不会产生毒副作用,如果经常咬笔头会不会中毒,抓着它写手是不是会烂掉........

    (这个比较全,但是有点乱,等我把软件测试学的比较专业的时候,回头再评价)

    如何测试一支钢笔?

  • 钢笔必须能写字,写出的字要连贯
  • 能在不同的纸上写吗?能在墙上写吗?笔尖朝上,倒着拿还能写出字吗?
  • 能在不同的环境下写吗?水里?沙漠?低温?太空?
  • 笔的形状是否适合手握?(想像一件用砂纸做的T恤……)
  • 要用多大的力气才能写出字来?
  • 长期放着不用,墨水会不会堵住?
  • 加一次墨水能用多长时间?
  • 笔上的标签有没有错别字?是否考虑了globalization,不同国家、不同文化?logo会不会让某种人反感?
  • 笔容易折断吗?如果折断了,飞出来的东西会不会伤到人?
  • 把笔放到嘴里咬会不会有危险?小孩总会乱吃东西。

    除了多发散思维外,还是要有软件测试理论做基础的好。

  • 转载:QQ登录测试用例

    2011-04-08 10:35:33

    QQ登录测试用例

    上一篇 / 下一篇  2011-04-03 22:53:33 / 个人分类:测试用例

    主要从输入数据着手,包括QQ账号本身是否有效、密码本身是否有效、QQ账号和密码是否匹配。  

    把QQ帐号进行等价类分类:有效的和无效的。有效的:长度在6-10位之间 、类型是0-9自然数。无效的:长度小于6 、长度大于10、负数、小数、英文字母、字符、特殊字符、中文、编程语言中的转义字符、空 

    把密码进行等价类划分:有效的和无效的。有效的:6-16位,非空,非保留字,非功能键,非汉字。无效的:空、空格、小于6位或大于16位、保留字、汉字、功能键

    预期输出结果:只有QQ账号和密码同时有效且匹配才登录成功,否则,无效的QQ账号或无效的密码或不匹配都将导致登录失败并进行错误提示。

    (或是因果法,即有效导致登录成功,无效导致登录失败)

    以上方法是引用的别人的,另外,我从界面测试方面想到一些测试用例,毕竟QQ登录界面也是个界面,如:

    易用性:1,按钮名称或输入框旁文字提醒应该易懂,望文知意

           2,支持Tab键的自动浏览功能,Tab键顺序与控件顺序一致

           3,默认按钮要支持Enter操作(如登录按钮)

           4,可写控件检测到非法输入后给出说明并能自动获得焦点

           5,完成同一功能或任务的元素放在集中位置,减少鼠标移动的距离

    美观与协调性:布局合理,按钮大小等

    从界面来看,虽然2010版理论上比较合理,但导致窗口太大,从用户角度,小的登录窗口则比较方便,经典版QQ登录界面算是一种折中,更具实用性

    个人不专业的看法,欢迎讨论。

  • 转载:为公司赚钱_测试职业生涯感悟之一

    2011-04-08 10:35:33

    谨以此文献给,和我一样曾经迷茫或者现在还在迷茫的同学们,那些不同意我的观点同学们,请你们手下留情,华丽的飘过。我只是希望我的文章,给大家一点指引,一点点就好,就像我曾经期望的那样。

     

    在我刚刚毕业的时候一直不知道工作的意义何在,就像我从小不知道学习的意义何在一样,上学的时候,父母说应该好好学习,那我就学习,但是学的不是特别的好;上班的时候,领导说应该好好工作,那我就工作,但是做的也不是特别的出色;老员工说工作辛苦,给钱又少,不值得努力工作,那我就很郁闷,因为老员工是我的未来,我的未来就是工作辛苦,给钱又少工作辛苦无所谓,我不怕苦,可是给钱太少我就接受不了,你们不要笑我贪钱啊!虽然我确实很贪钱我贪钱的原因很多,最重要的是想尽快赚更多的钱给我老爸老妈,让他们早点安享晚年,不要在为了赚钱去插稻秧、扒苞米、做麻花大果子卖早点这些活儿真的很累,我扒一天苞米,手就肿三天,疼的我抓心挠肝,每当想到这种疼痛我老爸老妈已经承受了二十几年,而我却无能为力,我真是心如刀割,自责的难以呼吸,明明都大学毕业了,才勉强养活自己,不知道何时才能为他们减轻负担。我下定决心,不惜任何代价,不管要受多少苦难,都一定要努力,为了赚钱,为了我的老爸老妈。

     

    好像有点跑题了,我多年摸爬滚打的经验总结就是,想要在公司赚到更多的钱就需要先为公司赚到更多的钱,工作的意义其实就是你为公司赚钱,公司再把你赚的钱的一部分作为工资给你而已,由于领导分配大多都是平均的,如果你能在平均的基础上为公司赚的更多钱,那么你就胜出了,这样才能有机会升值加薪。那么如何为公司赚更多的钱呢?

     

    为公司赚钱之基础篇:

    一是时间,要迅速,时间就是金钱,节省时间就是为公司节省资源。

    二是数量,你比别人做的越多,自然赚的越多,不仅仅收获工资也包含经验。

    三是质量,相同的速度,当然质量越高越好,如果你能把质量提高到超过领导的期望那就更好了。

     

    误区一:早干完是这些活,晚干完也是这些活,不如边干边玩,反正没人管,多潇洒?

    错,你干的不仅仅是活,那是钱,你越早干完,钱就越早到手,而且没准会更多,节省的时间可以去赚更多的钱。要玩可以下班再玩,那样更潇洒。

    误区二:少干活是这些钱,多干活也是这些钱,不如偷懒少干点,反正没人知道。

    又错,每个领导都会对工作有一定的度量,谁多谁少一目了然,如果你是领导,你会给谁加薪呢?再说相同的时间你的工作比别人少,你又怎么能比别人有更多的收获呢?

    误区三:差不多就行了呗!领导也没要求那么多,再说做那么好也不多给钱。

    再错,领导的要求是有局限性的,如果你能做的更好,领导会觉得你很有想法,很有潜力。而且这种不断提高质量的想法,本身就是有价值的。

     

    为公司赚钱之提高篇:

    一是总结,并且尽量文档化,尽量让这个经验可以通过文档进行培训。比如本人总结的《Task Owner Work Process》、《Checker Review Process》等等

    二是分享,有什么节省时间,提高效率,避免常见问题的方法,都可以作为分享的内容,形式可以是邮件,也可以是培训。

    三是优化,过去固有的流程和方法,可以根据实际操作进行优化,优化的原则就是为公司赚钱为公司省钱

     

    误区一:写文档真麻烦,又要截图又要排版,纯属浪费时间。

    错,真正的技术文档是磨刀不误砍柴工,因为培训新人是每个公司最浪费资源的环节,如果公司有足够的技术文档积累,那么培训的成本将会大大降低,甚至对员工的要求也可以低很多,成本也会随之降低。这也是外包能够赚钱的优势之一,就是有完善的培训流程,和丰富的技术文档。

    误区二:我好不容易积累的经验,怎么能平白无故教你呢?当年还没有人带我呢!

    又错,培训能力都是从经验分享锻炼而来的,试想一个不懂得经验分享的人,又怎么会懂得培训新人,又怎么能成为好的领导?

    误区三:领导说按照什么流程做,就按照什么流程做,浪费时间隐藏风险也没有我的责任。

    再错,领导作为流程的建立者,由于没有身处其中,很有可能不了解流程中的问题,这时候员工的提醒是非常重要的,如果你提醒了领导没有采纳,那是领导不对。如果你想到了但是没提,就是你的不对了。

     

    为公司赚钱之管理篇:

    一 大家一起赚钱

    (由于我现在只是个底层管理,经验不是特别丰富,所以以下言论仅代表个人观点,不一定适用于所有企业所有管理人员。)

     

    我曾经一度认为,领导和员工的利益是有矛盾的,因为领导总是有榨干员工剩余价值的嫌疑,但是现在我发现,这种领导所在的公司基本也没什么大成就,领导的作风限制了企业的发展。真正卓越的领导应该是带领员工,努力做好工作,一起为公司赚钱,并且同时兼顾员工,公司还有客户的利益。

    管理不应该仅仅机械的上传下达,分任务收结果,管理着应该和员工们一起合作,一起攻克难关,一起成长,发挥团队远远大于总和的力量,为公司赚更多的钱,开拓更广阔的市场。

    我管理时的几个原则:

    1.在可以承受的前提下,争取更多任务分给员工做,这样我就有理由为员工争取更多的福利。

    2.将流程或者技术文档化成草稿,全员评审不断优化,通过培训让员工们和我一起不断提升。这样员工才能经验金钱双丰收。

    3.尽量保证员工正点下班,让员工有更多的私人时间去做想做的其他事情。

    4.绝对不会说让员工郁闷的话,保证工作气氛一直都很轻松和愉快。

     

    二 聆听抱怨

    我做员工的时候和大部分同学一样,说话之前总是前思后想,生怕给领导留下不好的印象,会上啥都不敢说,实际上肚子里面好多问题没敢问。以前的领导也给我留下了或多或少的阴影,我一问问题,他就让我回去思考之类的现在想想真是好笑,或许当时领导也不知道答案吧?

    于是在我做管理的时候,最注意的就是员工的抱怨,当然在一开始的时候也没有人敢在我面前抱怨,只是我能听到他们讨论搞不清楚的问题,一旦听到立刻反思,这是哪方面的问题?如何正确解决?标准是什么?原因是什么?然后编写邮件,在上午或者下午的任务分配邮件中就会顺便提到,在讲给所有成员听,并且强调有问题及时反馈给我,我会告诉你们答案。久而久之,大家就很乐于跟我反馈了,有的时候是一些技术问题,有的时候是一些工作中的小抱怨,大部分问题我都可以解决,很多隐藏的风险都迎刃而解了,有的问题我也解决不了,大家也都很理解我,并且给了我很多的支持。我想这是我工作中最开心的事情了,大家有什么话都跟我说,有时候我出差回来,大家都说看不到我心里不踏实之类的,我就老感动了

     

    三 差别化培养

    龙生九子各有不同,每个人的特长和优势都是不同的,作为优秀的管理者,应该善于观

    察员工的长处,比如:有的能说会道,有的很负责,有的很心细充分发挥他们的特长

    可以创造更多的价值,为公司赚更多的钱,同时可以让他们迅速的成长。

    当然他们也会有各种各样的缺点,需要适时的修正,但是要讲究方法,不需要操之过急,或者每次都揪住某些人的某些缺点不放手,比如我之前公司的领导,开会的时候就喜欢找英语不好的员工翻译英文的技术文档,每次翻译不好,领导都会趁机显摆一下自己高超的翻译能力,顺便友善的提示员工需要加强英语,搞得那个员工好几天心情都不好,其实这个员

    工是个很敬业的人,心也很细,每次为了整理结果都会忙到很晚,有时候连晚饭都吃不上当时我的感触很深,我想如果我是她的领导,我一定不舍得说她,就算她真的英语差到了极点,我也愿意慢慢教她,带着她慢慢的成长。因为能力可以慢慢培养,但是性格是很难改变的。

     

    四 避免加班

    偶尔任务量的急剧增多造成的加班是正常的,无休止周而复始的加班就是不正常的了。

    经常听到有人抱怨工作加班的问题,其实加班与管理有很大的关系,我觉得优秀的管理者能够预测到加班的风险,在加班之前就能采取措施避免加班,就算是真的加班了,也能够总结归纳,以后不要再有类似情况的加班。我的团队就经历了这样的过程,一开始加班了一个月,一个月时间,我总结培训再总结再培训,然后就慢慢步入了正轨,现在超额完成任务,依然朝九晚五。

    避免加班的措施有很多,首先需要明确加班的关键问题出现在哪里?任务量太大?内容太繁琐?任务分配不均匀?工作流程不明确?新人太多?然后具体情况具体分析解决问题的方法有很多,就看你有没有想,愿不愿意做。

    大家可能会问,避免加班和为公司赚钱有什么关系呢?真正卓越的团队,是不加班也能完成工作任务,并且能完成的更好的团队,这样的团队能够为公司节省时间做更多其他的项目,多赚了项目的钱,这样的团队更吸引人,可以留住更多的人才,节省了招人的钱

     

    五 规避风险

    还记得非诚勿扰1里面的经典台词“股市有风险,入市需谨慎”,预知风险是管理者应该具备的基本的能力,规避风险也是管理者的价值所在,这也是我做管理最挑战也是最具有成就感的地方。

    风险有很多,以我们公司为例,比较明显的风险有:需求变更,任务数突然增多,员工请假。还有很多不太明显的风险:例会,培训,客户问题邮件,网络故障,设备不足,新人效率低,员工对变更的需求不了解,员工没有及时查收任务邮件...(实在太多,先写这些)大家都知道我们公司是外包,客户对我们的要求是准确率不能低于99.96%,而且还有很多竞争对手都在盯着,如果这些风险一旦转化成了错误,那我们全组都会丢饭碗,所以我们的压力是比较大的,庆幸的是,我们还是控制住了这些风险。

     

    总结:

    作为从业人员,我热爱我的测试这份职业,作为员工,我珍惜欣赏我才华的领导,作为管理者,我欣赏合作过的每位员工。

    我感谢东软给了我这个施展的平台,感谢领导给了我难得的管理机会,感谢51给我指路,虽然在公司曾经夜夜加班到凌晨,我却一点都不觉得苦,我觉得我所付出的不仅仅有了金钱的回报,更增加了经验的积累,才让我有了今天的感悟

  • 软件基础知识

    2011-03-08 22:24:35

    1、什么是软件测试?

    软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。

    2、软件测试的目的是什么?

    软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性。

    3、软件测试的分类

    从是否关心软件内部结构和具体实现的角度划分

      A.白盒测试

      B.黑盒测试

      C.灰盒测试
    从是否执行程序的角度

      A.静态测试

      B.动态测试。
    从软件开发的过程按阶段划分有

      A.单元测试

      B.集成测试

      C.确认测试

      D.系统测试

      E.验收测试

    4、什么是黑盒测试?白盒测试?灰盒测试?

    黑盒测试(Black-box Testing,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。

    白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。 这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

    灰盒测试,是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。


    5、黑盒测试用例的设计方法有那些?

    等价类划分方法·边界值分析方法·错误推测方法·因果图方法·判定表驱动分析方法·正交实验设计方法·功能图分析方法

    6、什么是软件质量?

    概括地说,软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。

    7、软件验收测试的合格通过准则是?

    1)、软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。  

    2)、所有测试项没有残余的一级二级三级的错误。  

    3)、立项审批表、需求分析文档、设计文档和编码实现一致。

    4)、验收测试工件齐全(测试计划,测试用例,测试日志,测试通知单,测试分析报告)

    8、性能测试(或称多用户并发性能测试)、负载测试、强度测试、容量测试是性能测试领域里的几个方面
    性能测试(Performance Test):通常收集所有和测试有关的所有性能,通常被不同人在不同场合下进行使用。测试软件在系统中的运行性能,度量系统与预定义目标的差距。
    关注点:how much和how fast

    负载测试(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。通过逐步增加系统负载,确定在满足性能指标的情况下,系统所能承受的最大负载量。
    关注点:how much

    强度测试(Stress Test):强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方。包括
    Spike testing:短时间的极端负载测试
    Extreme testing:在过量用户下的负载测试
    Hammer testing:连续执行所有能做的操作
    压力测试:通过逐步增加系统负载,确定在什么负载条件下系统处于失效状态,以此来获得系统能提供的最大服务级别。

    容量测试(Volume Test):确定系统可处理同时在线的最大用户数,使系统承受超额的数据容量来发现它是否能够正确处理。

    关注点:how much(而不是how fast)
    容量测试,通常和数据库有关,容量和负载的区别在于:容量关注的是大容量,而不需要表现实际的使用。

    其中,容量测试、负载测试、强度测试的英文解释为:
    Volume Testing = Large amounts of data
    Load Testing = Large amount of users
    Stress Testing = Too many users, too much data, too little time and too little room


    举例:一个人背X斤
    负载测试:200斤情况下,是否能坚持5分钟。
    压力测试:200,300,400...斤情况下,他的表现,什么时候失败,失败之后什么表现,重新扛200是否正常。
    容量测试:在坚持5分钟的情况下,他一次最多能扛多少斤。


  • LR录制C/S模式的脚本10054解决方案

    2008-08-16 15:58:40

    问题:

    使用Loadrunner8.1录制C/S结构的程序,采用多协议下的WINSOCKETS协议,录制过程正常,

    回放脚本时,在LOG中出现Error : socket2 - Connection reset by peer. Error code : 10054. 

    解决方案:

    点击Vuser-run-time settings,里面的thinktime默认是忽略的,将选项改为选择Replay think time中的as recorded,这样在运行的时候就不会出现把thinktime的时间忽略了。设置后,回放脚本,一切正常。
     

  • 做好测试计划和测试用例的工作的关键是什么?

    2008-06-11 18:00:30

    (一)   先说测试计划吧

            诚如magic_zhu所言,现在很多测试人员没意识到测试计划的重要性,很多时候测试计划成为一纸空文,其根本原因在于测试计划缺乏可执行性,也正是因为测试计划缺乏可执行性,导致下一次写计划的时候非常草率,甚至不写,就算写了也是一个花架子应付领导,这样形成了一个恶性循环,久而久之,测试计划纯属一个摆设,我们很多从业者不写测试计划,其理由是反正写了也不能按照计划执行,这种理由真的很荒唐可笑,这是典型的因噎废食,因为你的计划执行性差就不写?这样只能使测试更加失去控制,使你的测试过程彻底无计划,无目标,变成一个放任主流的状态,完全没有受控性。这样的产品质量保证显然是空谈。

            我觉得这个问题的解决方案不是不写,而是想办法写得更好,更有实效性,执行性。这个是问题的关键。

            一个好的测试计划是用来计划测试的,指导整个测试过程。所以一个好的测试计划一定是可以指导测试的,就是对整个测试过程中的人力,时间,资源,策略,范围的一个说明。

            作为一个测试计划来讲,核心的三个要素是时间,资源,范围。(这句话摘自微软的软件测试培训材料),时间就是什么时候做以及要花多久做,资源就是你要调用的人力、机器等资源,范围是你要测试的东西以及测试重点。

            除以上提到的3项之外,还有比较重要的项目有策略(具体就是怎么测)、风险控制(一旦有问题采取什么应急措施)等项目。

            要把一个计划做得很有实用性,按照笔者的经验,要注意以下几个方面:

    a.   上面提到的三要素不能少

    b.   测试策略一定要交待清楚,就是大概怎么测试

    c.   需要其他人员(部门)协调的,要交待清楚

    d.   在估计测试所需的时间、人力及其它资源时,尽量做到客观、准确、留有余地,特别是估计开发时间和debug时间,以及要对自己的执行用例速度,回归速度心里有数

    e.   测试计划中每个阶段要明确表明,并且测试阶段的输入、输出文档要清楚

    f.   测试计划中的时间段不宜太长(最好以day为单位),太长就比较模糊,不好度量,不好check

    g.   一定要有风险控制,要不然计划缺乏可执行性

    h.   计划写完之后不是装在兜里,要组织PM和Dev进行评审

    i.   要不断更新计划,记住:每个计划都是动态的,不是一成不变的

    (二)   再说测试用例

            和测试计划一样,测试用例很多时候也沦为形式,这是软件测试的可悲之处,软件测试的依据就是测试用例,如果用例弃之不用,你凭什么做好测试?这个很可笑。但是实际测试过程中很多时候测试用例并没用到实处,笔者认为还是用例实用性问题,有的时候用例洋洋洒洒数万字,到回归测试的时候根本用不上,至于如何选择回归测试用例,我曾经写过另一篇文章,欢迎查阅。

            下面我就个人体会谈谈做好测试用例的关键。

            首先,在做用例之前,要做两件事情。

            第一,   透彻了解程序(需求和架构)。

            第二,   做一个正式的测试设计(最好文档化)。然后再开始写用例。一般写用例的步骤和建房子一样,先搭框架,然后填材料,填材料的时候,主要根据需求做相关的设计,具体的设计方法就是那几种(郑老的书上写的很清楚)

            一般来说,设计一个比较实用的测试用例,注意如下几个方面:

    a.   选用好的用例管理工具(这个很重要,千万不要用word,excel)

    b.   用例一定要及时更新(补充新的想法,删除过时的需求)

    c.   做好用例分级

    d.   做好用例评审,写用例之前可以征询相关人员的意见

    e.   可以考虑结对编写,这个是不错的主意

    f.   要全面,包括功能、性能、兼容性、安全性、易用性、容错性等等

    g.   注意把握适当的颗粒度

            OK,以上是我个人总结的一些心得,希望对您有些帮助,谢谢magic_zhu提这个问题,如果对读者您有些帮助,也不浪费我写到凌晨0点的心血,呵呵~~~~~~~~关于这两个话题太大了,欢迎大家展开讨论!!

  • 功能测试用例的书写方式

    2007-12-25 17:15:47

    功能测试用例的书写方式(适于新手学习)
     

    功能性测试用例

    1. 测试的来源,即测试的需求

      测试用例的主要来源有:
    1) 需求说明”及相关文档
    2)相关的设计说明(概要设计,详细设计等)
    3)与开发组交流对需求理解的 记录(可以是开发人员的一个解释)
     4)已经基本成型的UI(可以有针对性地补充一些用例)
           简而言之,所有你能得到的项目文档,都尽量拿到。 从所得到的资料中,分解出若干小的“功能点”,理解“功能点”,编写相应的测试用例。

    2. 用例的组织方式

    不同的公司有不同的做法,原则上,只要方便管理和跟踪,怎么组织都可以的。
    用例可以按大的功能块组织,如查询功能模块的用例,可以组织在一起,打印模块的测试用例,可以另外组织在一起。
         在没有专门的测试用例管理工具的情况下,用例执行后会产生2种状态:“通过”、“失败”——这样加上“未 执行”的用例的状态,共3种状态。
        即从“未执行”用例中执行一个用例后,该用例状态应为“失败”或“通 过”。将同一状态的用例组织在一起。
      至于用例文件格式,可以是.DOC或.XLS(如果有专门的测试用例管理工具另当别论)。

    3. 用例与其他材料的关联方式,即如何解决用例跟踪的问题

    测试用例面临的比较大的风险有:需求的变更、设计的修改、需求的错误和遗漏等等。
    由于用例的主要来源是需求和设计的说明,所以对用例的跟踪其实就是对需求和设计的跟踪,需求和设计的 变更势必引起测试用例的变更。
      如前所说,将分解的功能点编号,与相应的用例联系起来。例如,你可以列一个表格,列出各个(编号的)功 能点和测试用例间的关联关系。
     这样,当需求和设计发生变化时,你只需要跟踪“功能点”是否变化,是否增加了新的功能点。
      4. 一个好的用例的表述要点,即用例中应当包含的信息

    一个优秀的测试用例,应该包含以下信息:
    1) 软件或项目的名称
    2) 软件或项目的版本(内部版本号)
     3) 功能模块名
     4) 测试用例的简单描述,即该用例执行的目的或方法
     5) 测试用例的参考信息(便于跟踪和参考)
     6) 本测试用例与其他测试用例间的依赖关系
     7) 本用例的前置条件,即执行本用例必须要满足的条件,如对数据库的访问权限
    8) 用例的编号(ID),如可以是 软件名称简写-功能块简写-NO.。
    9) 步骤号、操作步骤描述、测试数据描述
    10)预期结果(这是最重要的)和实际结果(如果有BUG管理工具,这条可以省略)
    11)开发人员(必须有)和测试人员(可有可无)
    12)测试执行日期

  • 数据统计

    • 访问量: 12427
    • 日志数: 16
    • 书签数: 1
    • 建立时间: 2007-12-25
    • 更新时间: 2018-11-13

    RSS订阅

    Open Toolbar