51Testing软件测试论坛

标题: 回复handongmei兄弟提出的【杀毒软件】的测试问题,请大家拍砖^_^ [打印本页]

作者: lijiepig    时间: 2008-4-6 15:00
标题: 回复handongmei兄弟提出的【杀毒软件】的测试问题,请大家拍砖^_^
原帖由 handongmei 于 2008-4-6 08:06 发表


呵呵,那摸请就杀毒软件的测试发表下高见吧!!用啥工具或方法可以测试出一个杀毒软件的存在问题,必须在杀毒软件出现问题后能找出漏洞在哪?


弱弱地说一声 ,因为对杀毒软件不是很了解,下面分析的基础都是根据我使用卡巴的经验而来,若说得太泛请见谅!!

杀毒软件作为一个测试对象,我觉得它的功能可以分为两大块:
1 核心功能:判毒和杀毒;
2 外围功能:即作为一个软件系统,除了核心功能之外的所有其它功能;

对于外围功能,其测试设计的思路和一般的系统没有太大区别,我就不多说了(有一点区别,下面会提到的);

那么进一步考虑核心功能,我确实对于杀毒软件不了解,就我所知目前主要有两种吧:特征码判断,以及行为判断;

不管还有哪些,我们作为杀毒软件的测试组,应该有权限阅读设计文档,那么其实就是依据测试工作的通则,在文档的基础上结合自身的知识进行测试设计:

正向:
1 对于【特征码判断】这个大特性而言,比较好办,通过自动化手段进行已知病毒样本的遍历,就可以发现是否有某些应发现/杀除却又未发现/杀除的病毒;

对于特征码会变的,具体根据杀毒软件的设计,进行等价类划分,或者直接落实在单元测试中保障;测试中也应考虑单个文件感染多个病毒的情况;

2 对于【行为判断】,其实也是类似的:
a 设计用例,验证所有设计中能够检测到的“原子行为”都能够检测到(对于各个原子行为,应该适当考虑再细分等价类和边界值);
b 设计用例,验证“有攻击性的特定原子组合”能被有效识别出来;
c 设计部分自动化用例,以一种随机组合的方式行动,包括短时间爆发大量行为的情况;
d 设计部分自动化用例,以多个病毒(在不同文件不同进程中被执行)并发运行的情况,验证软件消息队列处理的正确性,探寻是否能构成溢出;

这里值得一提的还有,现在的杀毒软件,比如卡巴,发现异常时可以选择【提示】或者【照规则行事】,要重点关注在【提示】的情况下,对于操作系统的影响,等等;

反向:
作为杀毒软件,非常重要的一点就是自身的健壮性,从两个角度来保障:
1 利用自动化手段,进行长时间稳定性测试;
2 进行一定程度的手工折腾;
3 与主流防火墙的协同工作应该没有冲突;
4 (最头大的一点)考虑被溢出攻击的可能,这点可能最好是能有1~2名测试组成员是有黑客代码的开发经验的,对软件的代码(包括所有外围功能)进行代码走读,扫清所有溢出漏洞;如果是从产品测试的角度来做,恐怕是很不好搞;这点个人认为应该在软件编码段就投入测试组成员进行的;
5 实际验证系统启动时不会被病毒抢先注入而导致杀毒软件自身的失败,包括考虑读取注册表及license判断的细节;

性能:
没啥好说的了,实测吧,一个大大的硬盘里装了大量小文件、大文件啥的,N多染毒的;考虑重复查杀时有无性能优化策略之类的,具体根据软件设计去看;

总结一下,基本上可以认为杀毒软件的测试与一般的软件系统差别不大,但对于健壮性和可靠性看得非常重要,这点是核心竞争力;
才疏学浅,请有相关经验的各位兄弟多指正^_^


至于你说的“在杀毒软件出现问题后能找出漏洞在哪”,即问题定位手段的有效性,是需要从多个方面解决的。
1 开发必须实现完备的日志打印,分级别,在测试阶段可以以高级别输出详细打印;
2 测试过程中与自动化手段的配合,至少可以知道在那种情况下会导致出现问题;
3 严格要求开发组单元测试的质量,如果单元测试应该发现的小问题有较多遗漏到了产品测试阶段,会造成问题的出现很飘忽,从而打击整个产品团队对于问题重现和回归测试的质量信心,在这样的情况下产品的进度将会很悲观;(不知道这条我说得是否明白,意思就是说如果有大量这样的问题在干扰,则问题定位的有效性会很受影响,其影响已经不仅是技术层面,而是项目管理层面了,经验之谈)。

[ 本帖最后由 lijiepig 于 2008-4-6 15:02 编辑 ]
作者: handongmei    时间: 2008-4-6 17:24
西西,不错,学习下,不过病毒不是本身就可能数据库注入吗?在系统未启动前你能用啥方发测试他会不会比杀毒软件抢先一步哪?呵呵,还有你说的"原子行为我实在是不太了解", ,先汗自己一下,可以详细点介绍下马?
作者: enjoylife    时间: 2008-4-7 18:34
看的不是很懂
作者: lijiepig    时间: 2008-4-7 20:10
原帖由 handongmei 于 2008-4-6 17:24 发表
西西,不错,学习下,不过病毒不是本身就可能数据库注入吗?在系统未启动前你能用啥方发测试他会不会比杀毒软件抢先一步哪?呵呵,还有你说的"原子行为我实在是不太了解", ,先汗自己一下,可以详细点介绍下马?


病毒数据库注入 我不太了解,BAIDU了下,没有发现很清晰的说法,但我认为无非是针对数据库溢出漏洞的注入;
回到问题本身,我为什么会这么写呢,这是需求决定的,如果杀毒软件会被病毒抢先一步绕过去,那它还用混吗?所以在其设计上一定会考虑到这点,参考其设计进行相应的测试就OK了。
要是问我啊?我一个对于杀毒软件只处于最终用户层次的人,如果能这么一时半会就想到方法,那也太神了点了

原子行为,其实是来源于“原子不可再分”的引申(当然我们知道原子是可以再分解的哈^_^),在我的帖子里,就是指的“不可被分解的最小行为”;
这个“不可被分解”是从两个角度看的,第一是杀毒软件的设计角度,即它设计上准备最小捕获怎样的行为;
第二是从判别病毒需要的角度,需要细化到怎样的行为;

不知道这样解释,能好懂不?
作者: GGLONE    时间: 2008-4-14 23:58
做通讯?
哦。。。
那问下,关于手机WAP于彩信的测试方法于容易出错的方向。。。
最近一直很是烦恼这个。。。
项目要结束。。。上面崔的紧。。。我的命好苦。。。
作者: liulinzhu    时间: 2008-7-1 11:43
我对杀毒软件测试也不是很了解,仅根据自身使用经验,补充LZ一点:
1.反向时是否可以加入“杀毒软件是否会误杀正常文件”这一条?
2.杀毒后,原有文件是否能恢复其原有功能,譬如可执行文件能否被运行?
不足之处,请指出。一起学习
作者: 阿七    时间: 2008-7-2 11:11
很不错    把你顶回第1页去

杀毒软件   1 中毒了.能杀毒
            2 没中毒,能防范于未然
             3 杀毒中,不要误杀
              4 杀完毒,中毒的文件要变回原来的文件
               5 杀毒软件出问题了,可以日志查询到
                6 性能测试,占内存,CPU等
                 7 界面
   
                 待续...        

阿七只提7点  o(∩_∩)o...哈哈

[ 本帖最后由 阿七 于 2008-7-2 11:17 编辑 ]
作者: gwrwd    时间: 2008-7-30 21:32
强顶
作者: 21ca    时间: 2008-8-1 22:58
标题: 测试用例 多多指教
我刚开始学,见笑了!

在超市用银行卡结帐,假定密码正确,可以写那些测试用例!
作者: yanglisong    时间: 2008-8-12 13:21
谢谢,学了不少东西,前一段时间在测试杀毒,与自动化的结合测试很有意思
作者: siwanglongjuan    时间: 2008-12-23 16:23
学到了,谢谢楼主




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2