测试相关

来源:互联网 发布:人过五十知天命感慨 编辑:程序博客网 时间:2024/04/20 23:17

一、黑盒测试白盒测试单元测试、集成测试、系统测试、验收测试的区别

  白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。

  软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:

  1)是否有不正确或遗漏的功能?

  2)在接口上,输入是否能正确的接受?能否输出正确的结果?

  3)是否有数据结构错误或外部信息(例如数据文件)访问错误?

  4)性能上是否能够满足要求?

  5)是否有初始化或终止性错误?

  软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:

  1)对程序模块的所有独立的执行路径至少测试一遍。

  2)对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。

  3)在循环的边界和运行的界限内执行循环体。

  4)测试内部数据结构的有效性,等等。

  单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

  单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。

  集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。

  系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。(常见的联调测试)

  系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。

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

  验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。

  ● 单元测试的主要目的是针对编码过程中可能存在的各种错误,例如用户输入验证过程中的边界值的错误。

  ● 集成测试主要目的是针对详细设计中可能存在的问题,尤其是检查各单元与其它程序部分之间的接口上可能存在的错误。

  ● 系统测试主要针对概要设计,检查了系统作为一个整体是否有效地得到运行,例如在产品设置中是否达到了预期的高性能

  ● 验收测试通常由业务专家或用户进行,以确认产品能真正符合用户业务上的需要(需求)。

二、如果让你来测试淘宝站内的搜索系统,请问你能想到哪些方法来进行测试?

我们假设淘宝网的搜索入口页面如下图所示: 
1、功能测试
对搜索框(宝贝、店铺)内:
    (1)输入一个存在的产品,ex:“衣服”,检查link
    (2)输入一个不存在的产品,ex:“ufhaiudsbngbdsjinvoxzcnoivhasuihfiawjeigobasiu"
    (3)其他边界条件测试:输入空符号,输入过长字符串,各种空格的随机插入等
对语音输入功能的测试:
    同样语音输入包含以上方面。
    比如兼容性:加入各种方言,外语,不明声音等。
2、性能测试
    (1)负载测试:模拟用户并发操作,验证搜索框的负载能力。
    (2)压力测试:在一定负载下,用自动化测试脚本7*24,验证功能测试的准确程度和服务器的效率。
    (3)连接速度测试:模拟用户操作,查看连接速度。
3、安全性测试
    (1)cookie测试:是否加密,是否起作用
    (2)表单测试:构造form和链接,检查可用性及安全问题。
    (3)链接测试:检查链接是否可用
    (4)正则表达式测试:构造非法正则表达式等。
4、可用性测试
    站在用户角度,检查信息是否有效可用
5、兼容性测试
    用户浏览器的版本/输入字符集的差异……

其他本人没有想到的问题可以在项目组中通过提交bug的方式解决。
最后联系开发人员,检查解决完手头上的问题,最后做回归测试。


%=========================另外一个答案=============

1.功能方面,是否能按指定条件查到正确、完整的结果,具体:

1.1录入条件为可查到结果的正常关键字、词、语句,检索到的内容、链接正确性;
1.2录入条件为不可查到结果的关键字、词、语句;
1.3录入条件为一些特殊的内容,如空、特殊符、标点符、极限值等,可引入等价类划分的方法等;

2.性能方面,可利用测试工具或各种测试手段考虑功能在各方面的表现,具体:

2.1压力测试:在不同发用户数压力下的表现(评价指标如响应时间等)
2.2负载测试:看极限能承载多大的用户量同时正常使用
2.3稳定性测试:常规压力下能保持多久持续稳定运行
2.4内存测试:有无内存泄漏现象
2.5大数据量测试:如模拟从庞大的海量数据中搜索结果、或搜索出海量的结果后列示出来,看表现如何等等。

3.易用性方面,交互界面的设计是否便于、易于使用,具体:

3.1依据不同的查询结果会有相关的人性化提示,查不到时告知?查到时统计条数并告知?有疑似输入条件错误时提示可能正确的输入项等等处理;
3.2查询出的结果罗列有序,如按点击率或其他排序规则,确保每次查询出的结果位置按规则列示方便定位,显示字体、字号、色彩便于识别等等;
3.3标题查询、全文检索、模糊查询、容错查询、多关键字组织查询(空格间格开)等实用的检索方式是否正常?
3.4输入搜索条件的控件风格设计、位置摆放是否醒目便于使用者注意到,有否快照等快捷查看方式等人性化设计?

4.兼容性方面,跨平台、多语言等多样性环境组合情况下测试使用的正常性,具体:

4.1WINDOWS/LINUX/UNIX等各类操作系统下及各版本条件下的应用
4.2IE/FIREFOX/GOOGLE/360/QQ等各类浏览器下及各版本条件下、各种显示分辨率条件下的应用
4.3SQL/ORACLE/DB2/MYSQL等各类数据库存储情况下的兼容性测试
4.4简体中文、繁体中文、英文等各类语种软件平台下的兼容性测试
4.5IPHONE/IPAD、安卓等各类移动应用平台下的兼容性测试
4.6与各相关的监控程序的兼容性测试,如输入法、杀毒、监控、防火墙等工具同时使用

5.安全性方面,往往容易被忽视的环节,具体:

5.1被删除、加密、授权的数据,不允许被查出来的,是否有安全控制设计;
5.2录入一些数据库查询的保留字符,如单引号、%等等,造成查询SQL拼接出的语句产生漏洞(SQL注入),如可以查出所有数据等等,这方面要有一些黑客攻击的思想并引入一些工具和技术,如爬网等。
5.3通过白盒测试技术,检查一下在程序设计上是否存在安全方面的隐患;
5.4对涉及国家安全法律禁止的内容是否进行了相关的过滤和控制

6.异常性测试,各种破坏性的操作的影响测试,具体:

6.1查询过程中断网、关机
6.2查询过程中强行中断关闭页面
6.3查询过程中强行杀死相关进程

0 0
原创粉丝点击