2015-04-10 17:13:01 ligengyong2010 阅读数 1467
  • Web前端开发第4季:JavaScript基础入门

    JavaScript是一种网页交互语言,为网页增添了巨大的表现力和交互能力,极大提高了用户体验,如今很难在找到不使用JavaScript的网站了。本课程主要是为刚刚接触JavaScript的朋友准备,详细的讲解了JavaScript的基本语法,以及事件的处理操作。 本季课程为JavaScript基础语法篇,着重介绍了JavaScript脚本语言的基础语法部分 内容包含: ◆ 认识JavaScript脚本语言、发展史、编译工具 ◆ JavaScript中的变量、数据类型、类型转换 ◆ 条件选择(if--else, if--else if ,switch--case) ◆ 循环(while循环, do--while循环, for循环,循环嵌套 ) ◆ 集合(Array基础常见操作、案例演示) ◆ set集合、map集合(集合的遍历、集合常用的方法) ◆ 课后习题 在本季课程的讲解部分结合了大量的案例演示,通过案例演示可以清楚的加深对JavaScript基本语言的理解; 建议在学习的过程中,一定要动手实战,这样才能真正的领悟到JavaScript的语法细节。 课程案例展示: 案例01:计算器 案例02:生成学生成绩 案例03:下拉菜单的联动 案例04:首页大图轮番

    403 人正在学习 去看看 王进

这个是我在自动化case编写框架的经验总结,由于作者经验有限,如有错误,欢迎指正

另外我有代码示例,但是不知道怎么上传,好像不支持附件啊,我传到资源里了,找不到的同学也可以留言,我私下发给你

框架背景

在测试项目中,项目的版本会有很多,需要测试人员对每个版本进行尽可能详尽的测试。自动化case能够大大提高测试的效率,减少人为出错的可能,有益于项目质量的保证。随着项目规模的扩大,项目case的增多,测试case的编写困扰着测试人员,这篇文章就是为了解决这个问题。

框架优点

  1. 简单
  2. 重用代码
  3. 层次化
  4. 便于扩展
  5. 让测试人员聚焦于业务逻辑的编写,提高自动化case编写的效率
  6. 方便代码的维护

框架使用

对于框架的使用,从一个小case说起,在作者测试的一个项目中,经常测试网络的连通性case,传统的case,可能需要十几甚至几十行代码,而使用自动化case编写框架,只需简单的3行语句,就能很好的完成这个任务

代码如下

#-*- coding: UTF-8 -*-
__author__ = 'ligengyong'

'''
a sample test for auto case framework
'''

import CaseBase

class Case(CaseBase.CaseBase):
    def __init__(self):
         CaseBase.CaseBase.__init__(self, "host ping itself")#case 名字

    def caseWork(self):
        cmd = "ping -c 3 127.0.0.1"
        flag = self.verifySumLocal(cmd, "icmp_seq", 3)
        self.organiseOutputDefault(flag)

    def work(self):
        self.caseWork()

if __name__ == "__main__":
    case = Case()
    case.start()

查看执行结果:

[root@Bash ligengyong]# python demo.py 
/usr/local/lib/python2.7/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.
_warn("Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
exe cmd at local host: ping -c 3 127.0.0.1  #执行命令
return:

PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. #返回结果

64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.014 ms

64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.031 ms

64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.018 ms

 

--- 127.0.0.1 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 1999ms

rtt min/avg/max/mdev = 0.014/0.021/0.031/0.007 ms

#case执行情况

Project: project
Version: 1.0.0
Case: host ping itself
Start_Time: 12:19:56 07/04/2015
End_Time: 12:19:58 07/04/2015
Expectation: success
Result: success
Reason: success

框架介绍

框架类关系图



关于图中几个类介绍一下

  1. case A, B, C表示具体的case类,本文中的demo例子中的case类型和CaseC类似
  2. CaseBase自动化代码基础框架类,继承了threading.thread类,实现了run方法,run调用了三个方法,
    a. 调用work方法,这个方法执行具体的工作,由子类去实现
    b. 调用时间戳函数,当case执行结束后计算更新时间
    c. 调用case运行结果输出函数,统计case执行结果
  3. ProjectBase继承了CaseBase,用来对一些project层面的配置和公用函数的编写,以及规范化case的执行流程
    举个例子,作者测的项目中,经常要在机器a上执行一些命令,CaseBase提供了函数exeRemote(self, cmd, ip, port, name, password, timeout=10)但是我不想每次都要输入host a的ip,密码等信息,这样我就写一个
    exeCmdAtHostA()方法,在exeCmdAtHostA中按照ProjectBase对于host a的配置信息对exeRemote方法进行进一步的封装,这样所有的子类case都可以简单的调用这个方法就可以了,既简化了代码,又便于理解,同时当host a的配置信息发生了变化或者exeCmdAtHostA方法的功能需要修改的时候,只需要改一处就可以了,这样使得代码便于维护
    另外一种情况,如果对于case要求执行前整理环境,执行任务,之后清理环境,这样就可以再重写work方法,新建子work方法,在work方法中调用整理环境,执行子work方法,清理环境,让子类去重写子work方法
  4. ModuleBase继承了ProjectBase, 它和ProjectBase有着类似的功能,只不过是module层面的信息

通过简单的介绍,不难看出框架具有以下特点

  1. 依赖倒置,使得程序依赖于抽象的类,而非具体的类
  2. 层次化复用代码
  3. 对修改关闭,对拓展开放
  4. 程序的启动由框架来做,用户只负责具体的业务逻辑
  5. 拓展性好,用户可以对框架的执行流程进行拓展或者修改

CaseBase介绍

在上一小节,已经看到CaseBase继承了threading.Thread类,下面对CaseBase的其他方法做一下介绍,由于作者的水平有限以及参与的测试的项目,可能不能对所有测试的基础方法都封装进来,后续如果有其他的需求,可以再加进来

首先介绍一下公共方法:

  1. closeProcessLike(processName) 根据process的名字,在本地找到,并kill掉
  2. closeProcessLikeRemote(processName, ip, port, name, password, timeout=10)根据process的名字,在目标主机找到,并kill掉,如果失败,会抛出异常

其次介绍一下CaseBase的类方法

  1. __init__(self, name)类初始化方法,name为case的名字
  2. initParameter(self)初始化变量
  3. setProjectAndVersion(self, name="project", version="1.0.0")设置项目的名字和版本,这个一般在ProjectBase进行覆盖
  4. def work(self)具体的执行方法,需要子类覆盖
  5. setOutputFile(self, name)设置输出文件,如果没有设置,会输出到标准输出
  6. puts(self, line)自定义的输出方法,如果子类需要打印一些东西,可以调用这个方法
  7. touch(self, TIME)用来更新时间戳
  8. done(self)用来在case执行结束后输出case的执行情况
  9. run(self)覆盖threading.Thread的run方法
  10. getResultString(self)生成执行结果string
  11. verifyHasLocal(self, cmd, target)在本机执行cmd,并查看返回结果是否含有Target,如果有返回True,如果没有返回False
  12. sleep(self, timeout)自定义sleep方法
  13. verifySumLocal(self, cmd, target, sum)在本机执行cmd,并查看返回结果含有target的个数是否为sum,如果是返回True,如果不是返回False
  14. exeLocal(self, cmd)在本地执行命令cmd
  15. exeRemote(self, cmd, ip, port, name, password, timeout=10)在远程执行命令cmd
  16. getRetFromExeRemote(self, cmd, ip, port, name, password, timeout=10)在远程执行命令cmd,并将执行结果返回,用来为用户自定义判断提供接口
  17. transportFile(self, file, remoteFile, ip, name, password, sshPort=22)往远端发送文件
  18. verifyHasRemote(self, cmd, target, ip, port, name, password, timeout=1)和verifyHasLocal类似,只不过是在远端执行的
  19. verifySumRemote(self, cmd, target, sum, ip, port, name, password, timeout=10)和verifySumLocal功能类似,只不过是在远端执行的
  20. organiseOutputDefault(self, flag)默认组织case执行结果的输出,flag为执行的标识,True为成功,False为失败

TestException自定义的异常类

其他事项:

  1. 如果一个case需要两个不同线程,需要将一个线程的done方法重写,并且不做任何处理,这样避免同时有两个线程同时输出case执行结

    def done(self):
         pass

     2. 如果一个case需要两个相同的线程的话,需要调用一下,setOutputFlag(False)即可


2019-11-13 18:39:09 lmm0513 阅读数 63
  • Web前端开发第4季:JavaScript基础入门

    JavaScript是一种网页交互语言,为网页增添了巨大的表现力和交互能力,极大提高了用户体验,如今很难在找到不使用JavaScript的网站了。本课程主要是为刚刚接触JavaScript的朋友准备,详细的讲解了JavaScript的基本语法,以及事件的处理操作。 本季课程为JavaScript基础语法篇,着重介绍了JavaScript脚本语言的基础语法部分 内容包含: ◆ 认识JavaScript脚本语言、发展史、编译工具 ◆ JavaScript中的变量、数据类型、类型转换 ◆ 条件选择(if--else, if--else if ,switch--case) ◆ 循环(while循环, do--while循环, for循环,循环嵌套 ) ◆ 集合(Array基础常见操作、案例演示) ◆ set集合、map集合(集合的遍历、集合常用的方法) ◆ 课后习题 在本季课程的讲解部分结合了大量的案例演示,通过案例演示可以清楚的加深对JavaScript基本语言的理解; 建议在学习的过程中,一定要动手实战,这样才能真正的领悟到JavaScript的语法细节。 课程案例展示: 案例01:计算器 案例02:生成学生成绩 案例03:下拉菜单的联动 案例04:首页大图轮番

    403 人正在学习 去看看 王进

case即用例

1.什么是测试用例(Test Case)

       是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单地认为,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。

以上内容来自百度百科

2.测试用例模板

2016-10-12 11:07:36 kansuke_zola 阅读数 599
  • Web前端开发第4季:JavaScript基础入门

    JavaScript是一种网页交互语言,为网页增添了巨大的表现力和交互能力,极大提高了用户体验,如今很难在找到不使用JavaScript的网站了。本课程主要是为刚刚接触JavaScript的朋友准备,详细的讲解了JavaScript的基本语法,以及事件的处理操作。 本季课程为JavaScript基础语法篇,着重介绍了JavaScript脚本语言的基础语法部分 内容包含: ◆ 认识JavaScript脚本语言、发展史、编译工具 ◆ JavaScript中的变量、数据类型、类型转换 ◆ 条件选择(if--else, if--else if ,switch--case) ◆ 循环(while循环, do--while循环, for循环,循环嵌套 ) ◆ 集合(Array基础常见操作、案例演示) ◆ set集合、map集合(集合的遍历、集合常用的方法) ◆ 课后习题 在本季课程的讲解部分结合了大量的案例演示,通过案例演示可以清楚的加深对JavaScript基本语言的理解; 建议在学习的过程中,一定要动手实战,这样才能真正的领悟到JavaScript的语法细节。 课程案例展示: 案例01:计算器 案例02:生成学生成绩 案例03:下拉菜单的联动 案例04:首页大图轮番

    403 人正在学习 去看看 王进

持续集成测试(2) – 测试case容器化

背景

我们都知道docker在生产过程中已经被广泛应用,
这里写图片描述

  1. 开发将已开发完毕的代码打包成镜像后push到仓库,进入测试周期即步骤2;
  2. 测试通过开发指定镜像从仓库pull到本地后,根据docker run命令后启动容器内服务,至此,测试环境已准备完毕,开始进行测试;
  3. 测试过程中如果遇到问题,则反馈给开发人员,进行问题定位,返回至步骤1;
  4. 当测试完毕后,通知开发测试已完成,开发将镜像tag告知运维人员,运维人员将镜像pull到线上机器,启动并运行。

以上为docker在生产应用中所历经的周期。从以上过程可以发现,相比较于原始生产周期中,docker应用所具备的优势有:

  1. 兼容多种平台同时并存,在centos系统可运行ubuntu,在macos运行centos等等,解决服务对于硬件系统的依赖问题。
  2. 能够保证了开发、测试、运维环境的统一,解决服务对环境的依赖所产生的问题;
  3. Docker能够确保每个容器都拥有自己的资源,并且和其他容器是隔离的

环境配置

github的用户使用说明的版本比较低,可去maven仓库查询新的依赖版本。

注:docker-client依赖了apache的httpclient包,使用配置时注意依赖包冲突问题。

<dependency>
  <groupId>com.spotify</groupId>
  <artifactId>docker-client</artifactId>
  <version>5.0.2</version>
</dependency>

测试方法总结

  1. 从测试方法上分,测试分为

    黑盒测试
    白盒测试
    灰盒测试

  2. 从测试目的上分

    单元测试
    功能测试
    集成测试
    系统测试
    alpha测试
    beta测试

  3. 从操作上分

    手工测试
    自动化测试

  4. 从被测目标服务质量需求分

    性能测试
    压力测试
    稳定性测试
    兼容性测试
    安全性测试

  5. 从测试阶段分

    冒烟测试
    BVT测试
    回归测试
    验收测试

  6. 从业务上分

    前端测试(移动端、pc端)
    接口测试
    策略测试
    中间件儿测试
    数据存储测试

参考自:
http://www.cnblogs.com/TankXiao/archive/2012/02/20/2347016.html
https://github.com/spotify/docker-client
http://www.programcreek.com/java-api-examples/index.php?api=com.spotify.docker.client.DockerClient

2019-06-10 21:50:51 hhl18 阅读数 684
  • Web前端开发第4季:JavaScript基础入门

    JavaScript是一种网页交互语言,为网页增添了巨大的表现力和交互能力,极大提高了用户体验,如今很难在找到不使用JavaScript的网站了。本课程主要是为刚刚接触JavaScript的朋友准备,详细的讲解了JavaScript的基本语法,以及事件的处理操作。 本季课程为JavaScript基础语法篇,着重介绍了JavaScript脚本语言的基础语法部分 内容包含: ◆ 认识JavaScript脚本语言、发展史、编译工具 ◆ JavaScript中的变量、数据类型、类型转换 ◆ 条件选择(if--else, if--else if ,switch--case) ◆ 循环(while循环, do--while循环, for循环,循环嵌套 ) ◆ 集合(Array基础常见操作、案例演示) ◆ set集合、map集合(集合的遍历、集合常用的方法) ◆ 课后习题 在本季课程的讲解部分结合了大量的案例演示,通过案例演示可以清楚的加深对JavaScript基本语言的理解; 建议在学习的过程中,一定要动手实战,这样才能真正的领悟到JavaScript的语法细节。 课程案例展示: 案例01:计算器 案例02:生成学生成绩 案例03:下拉菜单的联动 案例04:首页大图轮番

    403 人正在学习 去看看 王进

       在软件测试的流程里,制定好了测试计划后,接下来,就要开始做测试的准备工作了。测试的准备工作,除了,测试环境的配置,准备,测试工具的准备外,还有一个就是设计测试用例了。

       设计测试用例的人员,在有些公司,是有专门的测试用例设计人员,而,有些公司,测试用例是由软件测试工程师进行编写的。

 什么是测试用例?    

       测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

       根据设计技术来划分,测试可以分为黑盒测试和白盒测试。测试用例可以分为黑盒测试用例和白盒测试用例。

 

总体编写策略:

        对于测试用例编写来说,常用的四种方法,等价类、边界值、因果法、错误推断法,辅以场景测试法、探索式测试思想。

 

设计

(一)白盒技术

白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部逻辑为基础设计测试用例。

⒈逻辑覆盖

程序内部的逻辑覆盖程度,当程序中有循环时,覆盖每条路径是不可能的,要设计使覆盖程度较高的或覆盖最有代表性的路径的测试用例。

⑴语句覆盖。

为了提高发现错误的可能性,在测试时应该执行到程序中的每一个语句。语句覆盖是指设计足够的测试用例,使被测试程序中每个语句至少执行一次。

⑵判定覆盖。

判定指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次,因此判定覆盖也称分支覆盖。

⑶条件覆盖。

条件覆盖是指设计足够的测试用例,使得判定表达式中每个条件的各种可能的值至少出现一次。

⑷判定条件覆盖。

该覆盖标准指设计足够的测试用例,使得判定表达式的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。

⑸条件组合覆盖。

条件组合覆盖是比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。

⑹路径覆盖。

路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路径。

在实际的逻辑覆盖测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例,以达到路径覆盖测试标准。

⒉循环覆盖

⒊基本路径测试

 

(二)黑盒技术

⒈等价类划分

⑴划分等价类。

①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。

②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。

③在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。

④在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。

⑤在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

⑥在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。

⑵确定测试用例。

①为每一个等价类编号。

②设计一个测试用例,使其尽可能多地覆盖尚未被覆盖过的合理等价类。重复这步,直到所有合理等价类被测试用例覆盖。

③设计一个测试用例,使其只覆盖一个不合理等价类。

⒉边界值分析

使用边界值分析方法设计测试用例时一般与等价类划分结合起来。但它不是从一个等价类中任选一个例子作为代表,而是将测试边界情况作为重点目标,选取正好等于、刚刚大于或刚刚小于边界值的测试数据。

⑴如果输入条件规定了值的范围,可以选择正好等于边界值的数据作为合理的测试用例,同时还要选择刚好越过边界值的数据作为不合理的测试用例。如输入值的范围是[1,100],可取0,1,100,101等值作为测试数据。

⑵如果输入条件指出了输入数据的个数,则按最大个数、最小个数、比最小个数少1、比最大个数多1等情况分别设计测试用例。如,一个输入文件可包括1--255个记录,则分别设计有1个记录、255个记录,以及0个记录的输入文件的测试用例。

⑶对每个输出条件分别按照以上原则⑴或⑵确定输出值的边界情况。如,一个学生成绩管理系统规定,只能查询95--98级大学生的各科成绩,可以设计测试用例,使得查询范围内的某一届或四届学生的学生成绩,还需设计查询94级、99级学生成绩的测试用例(不合理输出等价类)。

由于输出值的边界不与输入值的边界相对应,所以要检查输出值的边界不一定可能,要产生超出输出值之外的结果也不一定能做到,但必要时还需试一试。

⑷如果程序的规格说明给出的输入或输出域是个有序集合(如顺序文件、线形表、链表等),则应选取集合的第一个元素和最后一个元素作为测试用例。

⒊错误推测

在测试程序时,人们可能根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例,这就是错误推测法。

⒋因果图

等价类划分和边界值方法分析方法都只是孤立地考虑各个输入数据的测试功能,而没有考虑多个输入数据的组合引起的错误。

综合策略

每种方法都能设计出一组有用例子,用这组例子容易发现某种类型的错误,但可能不易发现另一类型的错误。因此在实际测试中,联合使用各种测试方法,形成综合策略,通常先用黑盒法设计基本的测试用例,再用白盒法补充一些必要的测试用例。

 测试用例的基本要素包括测试用例编号、测试标题、重要级别、测试输入、操作步骤、预期结果。

要写好测试用例,要了解测试方法。

测试方法

等价类

1.定义

是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。

2.划分等价类

等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。

1)有效等价类

是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。

2)无效等价类

与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。

设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。

3.划分等价类的标准

1)完备测试、避免冗余;

2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;

3)并是整个集合:完备性;

4)子集互不相交:保证一种形式的无冗余性;

5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径"。

4.划分等价类的方法

1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。

如:输入值是学生成绩,范围是0~100。

2)在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类。

边界值

1. 定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

2. 与等价划分的区别

1) 边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。

2) 边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。

3. 边界值分析方法的考虑:

长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。

使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。

4. 常见的边界值

1) 对16-bit 的整数而言 32767 和 -32768 是边界

2) 屏幕上光标在最左上、最右下位置

3) 报表的第一行和最后一行

4) 数组元素的第一个和最后一个

5) 循环的第 0 次、第 1 次和倒数第 2 次、最后一次

5. 边界值分析

1) 边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。

例:测试计算平方根的函数

--输入:实数

--输出:实数

--规格说明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息"平方根非法-输入值小于0"并返回0;库函数Print-Line可以用来输出错误信息。

测试用例的评审

测试用例是软件测试的准则,但它并不是一经编制完成就成为准则。测试用例在设计编制过程中要组织同级互查。完成编制后应组织评审,需获得通过才可以使用。评审可由项目负责人、测试、编程、分析设计等有关人员组成。

测试用例的修改更新

测试用例在形成文档后也还需要不断完善。主要来自三方面的缘故:第一、在测试过程中发现设计测试用例时考虑不周,需要完善;第二、在软件交付使用后反馈的软件缺陷,而缺陷又是因测试用例存在漏洞造成;第三、软件自身的新增功能以及软件版本的更新,测试用例也必须配套修改更新。

一般小的修改完善可在原测试用例文档上修改,但文档要有更改记录。软件的版本升级更新,测试用例一般也应随之编制升级更新版本。

测试用例的管理软件

运用测试用例还需配备测试用例管理软件。它的主要功能有三个:第一、能将测试用例文档的关键内容,如编号、名称等等自动导入管理数据库,形成与测试用例文档完全对应的记录;第二、可供测试实施时及时输入测试情况;第三、最终实现自动生成测试结果文档,包含各测试度量值,测试覆盖表和测试通过或不通过的测试用例清单列表。

有了管理软件,测试人员无论是编写每日的测试工作日志、还是出软件测试报告,都会变得轻而易举。

 

2014-02-25 18:37:13 qq19931130 阅读数 730
  • Web前端开发第4季:JavaScript基础入门

    JavaScript是一种网页交互语言,为网页增添了巨大的表现力和交互能力,极大提高了用户体验,如今很难在找到不使用JavaScript的网站了。本课程主要是为刚刚接触JavaScript的朋友准备,详细的讲解了JavaScript的基本语法,以及事件的处理操作。 本季课程为JavaScript基础语法篇,着重介绍了JavaScript脚本语言的基础语法部分 内容包含: ◆ 认识JavaScript脚本语言、发展史、编译工具 ◆ JavaScript中的变量、数据类型、类型转换 ◆ 条件选择(if--else, if--else if ,switch--case) ◆ 循环(while循环, do--while循环, for循环,循环嵌套 ) ◆ 集合(Array基础常见操作、案例演示) ◆ set集合、map集合(集合的遍历、集合常用的方法) ◆ 课后习题 在本季课程的讲解部分结合了大量的案例演示,通过案例演示可以清楚的加深对JavaScript基本语言的理解; 建议在学习的过程中,一定要动手实战,这样才能真正的领悟到JavaScript的语法细节。 课程案例展示: 案例01:计算器 案例02:生成学生成绩 案例03:下拉菜单的联动 案例04:首页大图轮番

    403 人正在学习 去看看 王进

注册、登陆和修改密码测试用例

一、注册测试用例

序    号:

1

控件名称:

 

功能描述:

注册

编号

输入/动作

期望的输出/相应

实际情况

1

用户名和密码长度在【最小值,最大值】之间,进行注册

注册成功

 

2

用户名和密码长度都为【最大值】,进行注册

注册成功

 

3

用户名和密码长度都为【最小值】,进行注册

注册成功

 

4

必填项分别为空注册

显示必填项提示信息

 

5

用户名长度为【最大值】+1,进行注册

显示用户名长度验证提示信息

 

6

用户名长度为【最小值】-1,进行注册

显示用户名长度验证提示信息

 

7

密码长度为【最大值】+1,进行注册

显示密码长度验证提示信息

 

8

密码长度为【最小值】-1,进行注册

显示密码长度验证提示信息

 

9

用户名含有非法字符注册

显示用户名字符验证提示信息

 

10

密码含有非法字符注册

显示密码字符验证提示信息

 

11

两次输入密码不一致进行注册

显示两次输入密码不一致提示信息

 

12

以已经注册的用户名进行注册

显示用户名已存在提示信息

 

13

改变已存在用户的用户名的大小写进行注册

根据需求看是否区分大小写

 

 

 

 

 

 

二、登陆测试用例

序    号:

2

控件名称:

 

功能描述:

登陆

编号

输入/动作

期望的输出/相应

实际情况

1

使用合法用户名和密码登陆

登陆成功

 

2

使用错误的用户名或密码登陆

显示用户名或密码错误提示信息

 

3

用户名为空登陆

显示请输入用户名提示信息

 

4

改变合法用户名或密码的大小写登陆

显示用户名或密码错误提示信息

 

5

在合法用户名或密码前插入空格

显示用户名或密码错误提示信息

 

6

在合法用户名或密码中间插入空格

显示用户名或密码错误提示信息

 

7

在合法用户名或密码后插入空格

显示用户名或密码错误提示信息

 

8

使用已被禁用的账号登陆

显示账号被禁用等相应提示信息

 

9

使用已被删除的账号登陆

显示不存在此用户等相应提示信息

 

10

登陆界面是否支持快捷键,如TabEnter

Tab键能按照顺序切换焦点,Enter键能焦点于登陆按钮上

 

11

密码为空进行登陆

显示请输入密码,密码不能为空提示信息

 

12

用户名和密码均为空登陆

显示请输入用户名和密码提示信息

 

13

用户名中含有全角字符登陆

显示用户名或密码错误提示信息

 

14

密码中含有全角字符登陆

显示用户名或密码错误提示信息

 

 

 

 

 

三、修改密码测试用例

序    号:

3

控件名称:

 

功能描述:

修改密码

编号

输入/动作

期望的输出/相应

实际情况

1

新密码长度在【最小值,最大值】之间,进行修改

修改成功

 

2

新密码长度为【最大值】,进行修改

修改成功

 

3

新密码长度为【最小值】,进行修改

修改成功

 

4

不输入旧密码进行修改

显示未输入旧密码提示信息

 

5

输入错误的旧密码进行修改

显示旧密码输入错误提示信息

 

6

新密码输入为空进行修改

显示未输入新密码提示信息

 

7

重复新密码输入为空进行修改

显示未输入二次密码提示信息

 

8

新密码与重复新密码不一致进行修改

显示两次密码输入不一致提示信息

 

9

新密码长度为【最大值】+1,进行修改

显示密码长度验证提示信息

 

10

新密码长度为【最小值】-1,进行修改

显示密码长度验证提示信息

 

11

新密码中输入非法字符进行修改

显示密码字符验证提示信息

 

 

 

 

 

 

软件测试

阅读数 1271

没有更多推荐了,返回首页