现在关于软件测试领域的群体就有4种情况:
‘低管理,低技术’
‘低管理,高技术’
‘高管理,低技术’
‘高管理,高技术’

好多人对自己测试的职业发展很迷茫,个人觉得这篇文章不错,转给大家分享下,希望能给迷茫的人一点帮助.....

软件测试职业发展方向,大体上可以分为管理路线、技术路线、管理+技术路线。
测试初级阶段:
  测试工程师,属于软件测试职业生涯的初级域,其适用范围是入行软件测试3年内的常规测试从业者,其主要工作内容是按照测试主管(即直接上司)分配的任务计划,编写测试用例、执行测试用例、提交软件缺陷,包括提交阶段性测试报告、参与阶段性评审等。
管理+技术路线:
  首先是常规路线,这条发展路线要求管理与技术并重,因为软件测试的行业特点决定了这个因素:测试工程师向上晋升到测试主管、测试经理、测试总监,直至咨询域的更高方向!
  测试主管是企业项目级主管,对于中小型软件公司也可以是企业级主管,属于中级发展域,适用范围是2到5年职业经验的测试从业者。其工作内容是根据项目经理或测试经理的计划安排,调配测试工程师执行模块级或项目级测试工作,并控制与监督软件缺陷的追踪,保证每个测试环节与阶段的顺利进行。严格来说,这个级别更多属于测试的设计者,因为企业的测试流程搭建是由更高级别的测试经理或相关管理者来做的,测试主管负责该流程的具体实施;而更多的工作,是思考如何对软件进行更加深入、全面的测试。测试主管比较有创造性的工作内容就是测试设计,而恰恰很多公司忽略了或没有精力来执行此工作内容!应该说,在一个企业里做了3年左右测试工作的人员,很容易晋升到该职位,而之所以晋升,是与个人测试技术的过硬、测试方法的丰富,加上对测试流程的监控力与执行力的职业素质息息相关!
  测试经理是更高级别的测试管理者,属于高级测试方向域。对于大中型软件公司,该职位尤为重要,并且对其职业要求也比较高,一般适合4到8年的测试从业者,在管理与技术能力双双比较成熟的情况下,可以结合具体环境晋升到该级别。测试经理负责企业级或大型项目级总体测试工作的策划与实施。测试经理除了需要统筹整个企业级或项目级测试流程外,还要对于不同软件架构、不同开发技术下的测试方法进行研究与探索,为企业的测试团队成员提供指导与解决思路,同时还要合理调配不同专项测试的人力资源(如业务测试工程师、自动化测试工程师、白盒测试工程师、性能测试工程师),对软件进行全面的测试;另外,一些企业里,测试经理还需要与客户交流与沟通,负责部分的销售性或技术支持性工作。
  测试总监,属于常规发展路线的最高域,该职位一般在大型或跨国型软件企业,或者专向于测试服务型企业有所设立,一般设立测试总监的企业,该职位都相当于CTO或副总的级别,是企业级或集团级测试工作的最高领导者,驾驭着企业全部的测试与测试相关资源,管理着企业的全部测试及质量类工作。而其职业要求,也是技术与管理双结合。
  
  技术路线:
技术路线中级域:
  技术路线,划分为三个半方向,分别是自动化测试工程师、白盒测试工程师、性能测试工程师和认证测试工程师;前三者适用于通用软件测试领域,认证测试工程师乃嵌入式测试领域职位,至少目前仅出现在嵌入式领域。
  自动化测试工程师,定义在功能测试范畴,指通常所说的依靠自动化测试工具进行软件黑盒测试的工程师。从大环境讲,自动化测试是软件测试执行阶段的必然趋势,社会对于软件测试的认可度以及对自动化测试人才的需求必将日益增加。
  白盒测试工程师,定位于在软件测试周期的单元测试阶段对软件进行的代码级测试的人,包括代码走读、代码功能与逻辑测试、代码内存泄漏检查、代码运行效率检查、代码测试覆盖率分析等。如果说,自动化测试只是依靠脚本语言完成测试脚本编写与调试的过程(因为自动化测试工程师的工作重点不在编写脚本),对于自动化测试工程师的技术要求要相对偏低的话,那么白盒测试工程师就要对大型程序开发语言的完全掌握,因此其技术要求相对偏高!
  性能测试工程师,即在系统测试阶段、功能测试后对软件系统性能指标进行采集分析和运行效率检测的人。在一个尽量压缩的测试流程里,功能测试可以手工进行,白盒测试可以不做,但是性能测试必须要做,除非该软件非网络类软件即单机版软件!软件测试,从宏观上可以划分为三个大方面:功能测试、性能测试、安全性测试,功能测试说明软件做对了,功能测试+性能测试说明软件做好了,三者结合起来说明软件做的非常好!安全测试暂且抛之不提,这是下一个发展域的内容,但是为了把软件做好,为了真正保证软件的质量,性能测试绝不容忽视;只因目前很多企业由于时间、成本、人力条件的限制,暂且不做性能测试。性能测试工程师相对来说,是三个技术路线里技术要求最高的,因为软件的性能瓶颈归根结底落实到代码的运行效率这个问题上,因此性能测试要做好,性能测试工程师起码要懂开发;而为了发现性能问题,要懂软件开发架构;为了定位性能问题,要懂操作系统、网络协议、应用服务器乃至数据库的原理与使用;为了最终解决性能问题,要根据定位的问题有针对性的对代码、操作系统、网络架构、服务器、数据库进行优化!当然性能测试是一个系统工程师,绝对不是一两个人的事情,对于常规性能测试工程师,具备定位性能问题的能力即可。
技术路线高级域:
  进入技术路线的高级域,根据中级域的四个路线,可以细分成五个路线,分别是资深自动化测试工程师、资深白盒测试工程师、资深性能测试工程师、安全性测试工程师、标准化工程师,这些高级技术类人才完全与常规测试经理平齐,属于软件测试职业发展高级域。
  资深自动化测试工程师由自动化测试工程师晋升而来。如果说常规自动化测试工程师只是负责自动化测试脚本本身的设计与开发,那么资深自动化测试工程师的工作内容就是自动化测试这项工作的实施!也就是说,录制脚本-添加验证点-回放脚本只是最初始的自动化阶段,要在企业实施自动化测试,要有资深自动化测试工程师来设计数据驱动,开发测试框架,甚至一些企业内部自主开发小型测试工具(而非商业工具)的先例,这些也都是建立在资深自动化测试工程师具有深厚的技术底蕴后,主导其他人员协调完成的事情。
  资深白盒测试工程师,其工作内容包含常规白盒测试工程师的内容,除此之外,要协助测试经理或测试总监攻关测试方法与技术性难题,因此其技术水平更加雄厚。如果常规白盒测试工程师是停留在某种程序设计语言类型的代码级测试,那么资深白盒测试工程师就要脱离程序设计语言本身,结合不同架构、多种开发技术交互的情况下,寻找代码测试方法,并具有对代码优化的能力。
  资深性能测试工程师,来源于常规性能测试工程师,按照常规性能测试工程师的技术要求,资深性能测试工程师应该具备性能测试整体方案的设计能力,以及软件系统性能问题定位和性能优化的能力!除此之外,也要对主流的软件开发模式下的应用系统具有敏锐的洞察意识和感知意识。
  安全性测试工程师,其实从性能测试工程师衍生出来,因为只有具备性能测试经验的人,才对软件的开发模式、实现架构和技术本身充分了解,才会感知和预见软件系统存在的安全漏洞,加上其本人是测试出身,才知道如何通过系统漏洞尝试攻击软件系统,达到测试的目的。目前国内软件行业对于安全性测试的认识尚未清晰,该职业也更没有普及,一般只限于军事类、机密类、防病毒类或其他高安全性软件的测试工作中。
  技术路线专家域:
  在技术路线,向上继续提升的方向,我们称之为“技术专家”;如果说前面描述的技术职位的所涉范围都定位在企业内部,即企业级资深性能测试工程师,那么技术专家,我们可以看作是领域级专项人才!随着软件测试行业的职位不断细化,每个人在自己擅长的领域走向深入,都可以成为该领域的技术专家,技术专家在自已经营的领域里,具有个人独到的见解和深厚的技术实力,而这类人才可以不再从事具体的测试工作,而是提供行业性测试技术咨询、培训等,为软件测试整体行业的发展,起到了鲜明的带头作用。

  管理方面:
管理方面中级域:
  从事了1到3年左右的常规测试工程师,在经过对个人性格特点剖析后,如果认为自己是一个倾向于“高管理-低技能”的类型,那么想要实现自己的职业提升,可以向中级发展域的配置管理工程师、质量保证工程师、业务测试工程师转型。
  配置管理(SCM)与质量保证(SQA)同是CMM中的关键过程域(KPA),也同是现代软件工程里的必要角色,与软件测试同属软件开发团队的重要组成部分。只因这两个角色在软件工程里的人员配比数量相对较少,还不如软件测试这样规模化乃至于形成行业,而最多是一个职业;另外一个社会现象是,企业很少直接从社会直接招聘配置管理工程师和质量保证工程师,而通常的做法是从企业内部的现有测试员工队伍里选拔,而转型后的测试工程师,就成为SCM或SQA。分析其原因,我们可以感知,SCM、SQA与软件测试工程师都是关注于软件质量的相似职位,社会对于配置管理、质量保证的定义和工作内容并未普及,与其直接从社会招聘“0”基础的人来培养,倒不如从软件测试人员里升华!一般来说,这两种职位的上报对象是项目经理或相同级别管理者。
  转型后的配置管理与质量保证工程师,一定要转变一个意识,那就是常规测试工程师的工作范围很大一部分(不是全部)只限于测试流程,而配置管理和质量保证的工作范围是面向整个软件开发流程,二者的职业要求都非常重视软件工程知识体系的建立和软件开发总体流程的实施能力。由于配置管理工程师除了企业配置管理流程的搭建与实施外,一般会涉及配置管理工具的管理与维护,而质量保证工程师更多的工作是软件开发流程的控制与维护,故而配置管理对技术的要求稍高于质量保证。
  业务测试工程师,定义为面向行业类软件业务逻辑与工作流测试的人员。当前软件开发类型,很大一部分是行业类软件的应用,如ERP、SCM、CRM、OA、电信、金融、财务、嵌入式、通信、手机、游戏……这就要求从事行业类软件测试的人员具备行业背景、业务知识,熟练该行业工作流程。从社会上出现的很多对此类经验要求的测试工程师招聘信息中,我们更加肯定这种趋势;所谓存在即是道理,既然社会上有了需求,那么就可以作为个人发展的方向。而另外一个特点是,业务测试工程师的工作内容主要是黑盒测试,属于功能范畴,因此对技术要求不大,设置一些大型行业类软件公司的业务测试工程师薪资丰厚,但是完全可以不懂技术,因为它的工作性质决定了不需要懂很多的技术!他们甚至连软件的界面测试都不做——交给常规测试工程师实施,而完全关注软件的业务性和易用性,由于其深厚的行业背景,可以为软件的在正式发布前提出很多建设性的意见,而这些建议正是软件开发商提高产品易用性、增加用户满意度、开拓市场、创造利润的关键因素之一!
管理方面高级域:
  当管理路线的中级域方向继续上升至高级域,就分别到达配置管理经理、质量保证经理、产品经理、业务专家。
  如果说配置管理工程师、质量保证工程师更加侧重于配置管理流程、质量保证流程的实施与日常管理维护,那么配置管理经理、质量保证经理就是更侧重于配置管理流程、质量保证流程的建立与改进。一般在中小软件企业,可能没有这两个角色,而全部的配置管理或质量保证工作都由工程师担当;但是大中型软件企业对资深配置管理经理、资深质保经理求贤若渴。软件系统越庞大,软件开发团队规模就越庞大,软件开发流程中出现问题的几率就越高,高效管理软件开发流程,不断改进软件质量,是每个软件公司在技术上没有顾虑后的下一个急需攻破的难关!
   业务专家,属于行业内咨询、顾问的角色,已经几乎脱离了测试工作本身,而更多为企业的产品需求分析、设计、开发、测试等各个环节提供指导工作,其目的也是提高软件的易用性和稳定性,减少后期不必要的需求变更。该职位也同样在目前热点行业的大中型软件企业有所设立。
  产品经理,这个职位在很多企业有所设立,可以说它是质保经理的派生,只是它更侧重于软件在产品化之前的质量监控工作,包括软件开发流程、软件测试等技术与管理的各个方面。
管理方面咨询域域:
  管理路线的最高发展域是咨询域,与技术路线的专家域类似,在配置管理、质量保证、软件产品化、行业领域达到高深造诣的人才,他们有丰富的从业经验、深厚的管理底蕴,具有对软件工程高瞻远瞩的慧眼和胆识,往往供职在专业的咨询与培训公司,提供IT业管理类咨询与培训的服务,推动着软件行业的前进。国内外很多为软件企业进行CMM咨询和实施的公司里,就是这些人才的大本营之一!

posted @ 2012-03-27 14:18 青蘋果 阅读(301) 评论(1) 编辑

用过博客园的朋友都知道博客园日历在哪天写过随笔或文章时,在日历上就会显示出日历的超链接。如我在2012-3-6这天写了新随笔,那么在日历中2012-3-6这一天的日期就会赋于链接,当点击日期时,就会显示出这天发表的新随笔,如下图:

具体的实现思路是:

1.创建数据库和创建数据表,id( int 主键 自增长),Context(next not null),Tile(char(20) not null),CreateTime(dateTime getdate())

2.在构造函数中得到数据表(dateTable)

2.实现日历的DayRender事件;

3.在事件比较遍历的日期与数据库中有日期是否相等,相等就赋上链接,否则就正常显示;

 细节描述:

1.数据库:

2.在构造函数中得到数据表

  protected void Page_Load(object sender, EventArgs e)
        {
            GetDataTable();//得到数据库表并保存入一个数据集表中
            string date = Request.QueryString["date"]; //得到传来的参数 参数是第三个步骤传来的
            if (!string.IsNullOrEmpty(date))//参数里面是否有值
            {
                string sql = string.Format("SELECT  * FROM MyEditorContext where CreateTime= '{0}'",date);
                Repeater1.DataSource = DBHelper.Query(sql).Tables[0];
                Repeater1.DataBind();
            }
        }

 private void GetDataTable()
  {
       string sql = "SELECT  * FROM MyEditorContext ";
       dt = DBHelper.Query(sql).Tables[0];
   }

3.实现日历的DayRender事件和较遍历的日期与数据库中有日期是否相等,代码不是很难相信大家都看得懂的

protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
        {
            CalendarDay day = e.Day;//设置当前日期
            TableCell cells = e.Cell;//设置表格
            if (day.IsOtherMonth)//如果是当月的其它日就清除当前内容
            {
                cells.Controls.Clear();
            }
            else
            {
                try
                {
                    string txt = arr[day.Date.Month][day.Date.Day];//得到节日
                    DateTime date = day.Date;
                    if (!string.IsNullOrEmpty(txt))//判断当前是否有节日
                    {
                        //为日期添加节日
                        cells.Controls.Add(new LiteralControl("<br>" + txt));
                    }
                    string text = ((LiteralControl)cells.Controls[0]).Text;
                    foreach (DataRow row  in dt.Rows)
                    {
                        if (date.ToShortDateString().Equals(((DateTime)row["CreateTime"]).ToShortDateString()))//判断它们的日期是否相等

                        {
                            cells.Controls.Clear();
                            cells.Controls.Add(new LiteralControl(string.Format("<a href='Default.aspx?date={0}' title='{1}' style='font-weight:bold;color:red;'>{2}</a>", row["CreateTime"], row["Title"], text)));//这里添加一个超链接,并指向本页,把日期传入 当鼠标移上去时显示出随笔的标题
                        }
                    }

                }
                catch (Exception)
                {
                    Literal l = new Literal();
                    l.Text = "页面错误";
                    cells.Controls.Add(l);
                }
            }

4.前台页面代码,说明下这里用了编辑器CKEditor.NET实现随笔的编辑,用了.NET Repeater 控件实现随笔的显示和 Calendar 控件实现日历的显示,如下s:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication_Calender1._Default" %>
<%@ Register Assembly="CKEditor.NET" Namespace="CKEditor.NET" TagPrefix="editor" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>模仿博客园中日历样式</title>   
    <link href="css/Style.css" rel="stylesheet" type="text/css" />
    <script src="ckeditor/ckeditor.js" type="text/javascript"></script>
    <script type="text/javascript" src="js/MyJs.js"></script>
</head>
<body>
    <form id="form1" runat="server">
        <a href="#mydiv" class="shui" >随笔</a><br />  
        <hr />
        <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
                <table width="75%" border="0" cellpadding="0" cellspacing="0" >
                        <tr>
                            <td>                       
                                <h2 style="text-align:center;">
                                    <%#DataBinder.Eval(Container.DataItem, "Title")%><!-- 当指定数据源后 实现数据的绑定 -->
                                </h2>
                            </td>
                        </tr>
                        <tr>
                            <td>                       
                                <br /><br /><br /><%#DataBinder.Eval(Container.DataItem, "Context")%>
                            </td>
                        </tr>
                        <tr>
                            <td align="right">          
                               <br /><br /><br /><%#DataBinder.Eval(Container.DataItem, "CreateTime")%>
                            </td>
                         </tr>      
                    </table>
            </ItemTemplate>
        </asp:Repeater>
        <div class="calender">
            <asp:Calendar ID="Calendar1" runat="server" BackColor="White" SelectionMode="None"
                BorderColor="White" BorderWidth="1px" Font-Names="Verdana" Font-Size="9pt"
                ForeColor="Black" Height="190px" NextPrevFormat="FullMonth" Width="95%"
                ondayrender="Calendar1_DayRender">
                <SelectedDayStyle BackColor="#333399" ForeColor="White" />
                <TodayDayStyle BackColor="#CCCCCC" />
                <OtherMonthDayStyle ForeColor="#999999" />
                <NextPrevStyle Font-Bold="True" Font-Size="8pt" ForeColor="#333333"
                    VerticalAlign="Bottom" />
                <DayHeaderStyle Font-Bold="True" Font-Size="8pt" />
                <TitleStyle BackColor="White" BorderColor="Black" BorderWidth="4px"
                    Font-Bold="True" Font-Size="12pt" ForeColor="#333399" />
              </asp:Calendar>
        </div>
        <br />
        <div id="mydiv" class="mydiv" >
            <table width="75%" height="538px">
                <caption><h3>写随笔</h3></caption>
                <tr>
                    <td>
                        <b>标题:</b><input type="text" runat="server" id="txtTitle" class="txtTitle"/>
                    </td>
                </tr>
                <tr>
                    <td width="75%">
                        <editor:CKEditorControl ID="editor" runat="server" Height="450px" Width="100%"></editor:CKEditorControl>
                        <asp:Button ID="BtnSubmit" runat="server" Text="提交" CssClass="btn"
                            OnClick="BtnSubmit_Click" />                           
                    </td>                    
                </tr>
            </table>       
        </div>
    </form>
</body>
</html>

如下图:

posted @ 2012-03-06 18:14 青蘋果 阅读(772) 评论(0) 编辑

这几天看了下.net 日历控件,去Google了下出来很多,大家都知道.netframework版本中自带的日历控件只有日期没有备注的,比如我在1月1日下面要显示出‘元旦节’这三个字,那要怎么做呢?

下面先熟悉下Calarder控件的常用属性:

SelectionMode:是指定是否可选择天、周、整月,是一个CalendarSelectionMode枚举;

SelectedDate:是得到或设置当前选择的时间,是一个DateTime结构;

VisibleDate:是得到或设置日历显示的日期,是一个DateTime结构;

PrevMonthText:是切换上个月的符号,可以用‘上个月’表示,是string类型;

NextMonthText:是切换下个月的符号,可以用‘下个月’表示,是string类型;

SelectMonthText:是显示选择整个月的符号,可以用‘选择整月’表示,是string类型;

SelectWeekText:是显示选择整个周的符号,可用‘选择’表示,是string类型;

ShowGridLines:是否显示出网格线,是Boolean类型;

常用事件:

SelectionChanged:当选择一个日期时触发;

DayRender:当在加载日历控件时触发,相当于OnRender事件;

VisibleMonthChanged:只要对月份进行操作都触发;

下面进入正题,怎么实现自定义日历控件:

1.在Page_Init方法中实例化个String型二维数组分别是以月份和天数做长度,再把对应日期的节日写出来以便后面显示,如:

private string[][] arr;

protected void Page_Init(object sender, EventArgs e)
        {
             arr = new string[13][] ;//分别为 月
             for (int i = 0; i < 13; i++)
             {
                 arr[i] =new string[32];//为年、月进行赋值
             }
             arr[1][1] = "元旦节";
             arr[2][14] = "情人节";
             arr[3][8] = "妇女节";
             arr[3][20] = "姐姐的生日";
             arr[3][12] = "植树节";
             arr[4][16] = "妈妈的生日";
             arr[4][29] = "我的生日";
             arr[5][1] = "劳动节";
             arr[6][1] = "儿童节";
             arr[7][1] = "建党节";
             arr[8][1] = "建军节";
             arr[8][10] = "爸爸的生日";
             arr[9][10] = "教师节";
             arr[10][1] = "国庆节";
             arr[12][24] = "平安夜";
             arr[12][25] = "圣诞节";
            
        }

2.主要在DayRender事件进行操作;

 protected void Calendar3_DayRender(object sender, DayRenderEventArgs e)
        {
            CalendarDay day = e.Day;//设置当前日期
            TableCell cells = e.Cell;//设置表格
            if (day.IsOtherMonth)//如果是其它月的日期就清除
            {
                cells.Controls.Clear();
            }
            else
            {
                try
                {
                    string txt = arr[day.Date.Month][day.Date.Day];//得到完整的月、日与数组进行匹配
                    if (!string.IsNullOrEmpty(txt))//判断当前是否有节日
                    {
                        cells.Controls.Add(new LiteralControl(string.Format("<br><font color=red>{0}</font>", txt)));//把这个 红色的字符串 加在显示的日期后面
                    }
                }
                catch (Exception)
                {
                    Response.Write("<font color='red'><h1>页面错误!</h1></font>");
                }
            }
        }

到了这里就可完成显示了,但我们想得到博客园那样显示出链接的日历,比如:今天发了篇博客,就要把今天的日期高亮显示并具有超链接,那又该怎么实现呢?第二篇博客再讲述。

 

posted @ 2012-01-29 16:59 青蘋果 阅读(1677) 评论(0) 编辑

对于刚从学校出来的学生来说,大家可能对软件测试生疏些,而对软件研发都再不过的熟悉了,今天就介绍下软件测试理论:

  1. 测试目的:

      测试的目的是为了发现尽可能多的缺陷。成功的测试在于发现了迄今尚未发现的缺陷,所以测试人员的职责是为了发现更多的缺陷而设计测试用例,它能有效地揭示潜伏在软件里的缺陷。

  2.  常用的测试模型(测试生命周期)

    常用的测试模型有:瀑布模型、V模型、W模型;

          瀑布模型是按工序将问题化简,将功能的实现与设计分开,采用机构化的分析与设计方法将逻辑实现与物理实现分开。自上而下分为需求分析、制定计划、编写测试用例、软件测试、验收测试;

      V模型是最为明确的描述了开发阶段与测试阶段的对应关系,比如在单元测试对应开发阶段是编码,集成测试对应的开发阶段是详细设计,系统测试对应的开发阶段是概要设计,最后的验证测试对应的开发阶段是验收测试;

          W模型是伴随整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,测试与开发是同步进行的,比如在用户需求阶段测试人员应根据用户需求验收测试用例设计,在需求分析阶段测试人员应进行调研确定系统测试用例设计,概要设计阶段测试人员应进行集成测试的设计,详细设计阶段测试人员应进行单元测试的设计,编码阶段测试人员应进行单元测试,在集成(对系统模块的连接)阶段进行集成测试,在实施(是否满足用户需求)阶段应进行确认测试和系统测试,在交付阶段应对软件进行验收测试;

  3.  测试范围

  1、功能性,包括适合性方面、准确性方面、互操作性方面、安全保密性方面,功能性依从性;

  2、可靠性,包括成熟性方面、容错性方面、可靠性依从性;

  3、易用性,包括易操作性方面、吸引性方面,易用性依从性;

  4、兼容性,包括硬件兼容性方面、软件兼容性方面、数据兼容性方面(XML符合、数据库移植)、新旧系统数据迁移等方面;

  5、性能性,包括对系统的瓶颈进行压力测试、对系统进行负载测试、配置测试;

 4.  测试方法

  软件测试方法有很多,在不相的时期都有不同测试方法这样有助于提高测试效率。

  软件方法有:白盒测试、墨盒测试、灰盒测试;按软件生命周期可分为:单元测试、集成测试、系统测试、确认测试;其中常用的功能性测试方法包括:UI测试、数据测试、操作测试、接口测试;常用的性能测试方法包括:压力测试、负载测试、兼容性测试、安全性测试;其它测试方法包括:BVT测试(我们常说的冒烟测试)、回归测试、α测试、β测试;

  这里我们选择常用的测试方法加以说明:

  白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作,也就是要对软件的源代码进行测试。

墨盒测试也称功能测试是软件测试行业中常用的测试方法,它是通过测试来检测每个功能是否都能正常使用,不了解程序内部是怎么工作的,只注意输入什么输出什么;

  灰盒测试是介于白盒测试与黑盒测试二者之间,补充了白盒测试和墨盒测试的不足,是大型企业中常用的测试方法;

  压力测试是获取系统正确运行的极限,检查系统在瞬间峰值负荷下正确运行的能力。比如对上传这个动作进行压力测试,一次上传1KB大小文件是可通过的,那么我们上传10M的文件看系统的反应会怎样;

  负载测试用于检查系统在使用大量数据的时候正确工作的能力,即检验系统的能力最高能达到什么程度。比如对登陆动作进行负载测试,1个用户登陆系统可通过,那么我们用1000个用户同时登陆系统看系统能否通过;

  BVT测试是按先后的顺序的,如果测某两个功能时,这两个功能有先后顺序,第二个功能需求第一个功能的值,则第一个功能未实现,那就不用去测试第二个功能了;

  回归测试(regression test)是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。比如修改了某个功能,则把该功能有关联的测试用例找出重新执行;

  α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。

  β测试是由软件的多个用户在客户场地实际使用环境下进行的测试,这些用户返回有关错误信息给开发者。测试时,开发者通常不在测试现场.因而,β测试是在开发者无法控制的环境下进行的软件现场应用

  4.  测试用例

  用例的设计是要分类的,用不同的测试方法用例的设计是不同。不要把用墨盒测试方法的测试用例拿去白盒测试,那就张冠李戴了对吧,只有对症下药才是解决问题的根源。好了要想设计出一个好的测试用例,我们应该先明确是用什么测试方法,具体用例设计方法如下:

  墨盒测试的用例设计方法:等价类划分、边界值分析、因果图、判定表驱动法、正交试验、比较法、错误推测

  白盒测试的用例设计方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖

  灰盒测试的用例设计方法:墨盒测试和白盒测试的用例设计方法都可能用到;

  5.  测试工具

  常用的测试工具有:

  性能化测试工具:LoadRunner

  自动化测试工具:QTP(QuickTest Professional)

  缺陷管理工具:QC(Quality Controller)、TD(Test Director)

 6.  测试流程

立项阶段

在立项阶段测试人员应准备好根据用户需求验收测试用例设计,说明项目是可行的。我们要大概知道客户的要求是怎么样,以好使自己的心里有具底,以便以后做测试计划和用例的设计。

需求阶段

在需求分析阶段测试人员应参加到调研工作中,以便对测试计划和测试用例的编写,帮着研发人员整理初步的解决方案。

设计阶段

在设计阶段中测试人员的工作就多了,一是要对系统中的功能进行用例设计,二是编写测试计划,三是要帮着研发人员整理详细设计说明书;

编码(单元测试)阶段

在编码阶段测试人员对已完成的功能执行用例,至于单元测试由研发人员完成。如果发现问题询问研发人员,如果是BUG则提示BUG;

集成测试阶段

在集成测试阶段中测试人员应把注意力发在接口,和几个模块或功能的交接处,并参考详细设计说明书进行测试;概要设计的对象主要为系统,系统子系统,模块,子模块,函数等,通过体系结构进行模块的划分,并进行数据设计、接口设计,对其进行分解描述,依赖关系描述,接口描述等,并保持模块与需求的对应关系,因此,对集成测试的重点,将主要测试模块之间的接口和接口数据传递关系,以及模块组合后的整体功能。

系统测试阶段

在系统测试阶段中,说明软件已初步建立,但还要与硬件、外设、网s络等其他元素放在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案。还要完善软件的各种的书写,如用户操作手册、部署安装手册、根据测试计划整理阶段性测试报告,

系统测试主要验证功能是否符合需求规格的定义,是一种在实际环境下的测试,同时也是全面的系统级测试,其内容包括产品功能、性能指标、兼容性、可靠性、容错能力、可维护性、安全性等方面;

验收测试阶段

验收测试阶段是系统开发生命周期方法论的一个阶段,这时相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。这是管理性和防御性控制。

     验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。

结项总结阶段

在结项总结阶段一般由项目经理对所有测试人员的资料汇总进行总结性的汇报,比如:这个项目用的什么生命周期,在某个阶段进行的什么工作以及完成率怎样,总共用的人力物力等。

posted @ 2012-01-10 14:05 青蘋果 阅读(1538) 评论(0) 编辑