之前我有提到,测试基本上是从界面、功能、性能、安全性、易用性、兼容性六个方面进行的,这次主要就是来复习一下这六点的。
说起界面,不管什么软件,给人的第一印象就是界面,背景图案的展示、整体布局、按钮的分布及形状、颜色的冷暖对比,都是会影响到用户的使用感官的,相信你们也不愿意使用一个看上去简陋无比,歪七竖八的软件或者网页吧。
所以界面的测试虽然可以放在功能完善后进行,但是在上线时候的优先级还是比较高的。如何保证界面的测试顺利进行,就需要找到产品或者设计交付的当前版本的设计原图,作为对比测试,当对比测试进行完毕后,最好要求设计进行一轮收尾验证,毕竟一些像素点级别的差异,不敏感的人还是很难识别的出来的,我们还是不要多费那个功夫,拜托我们的设计进行效验吧。当然如果在对比测试中,个人感觉到某些地方设计的不合理,也是可以找产品对一下,开个小会,解决一下。
说完界面,再来谈谈功能,个人认为功能可以说在测试中是重中之重,优先级最高的,如果一款软件,研发出来后,功能都无法正常运行,那哪怕再好看,估计也是无法正常上线的。在功能测试中,我自己的做法是如果是刚进公司,第一次接触的话,最好得方法是先将产品结构图、产品需求文档、功能流程图了解熟悉一遍,记下自己认为容易出错或者说重点测试项(最好是用笔或者用文档记下来),然后将软件功能过一遍,着重过一下刚刚记下的重点测试项,最后翻出公司之前的测试用例,对照着用例将整个流程再过一遍,如此三遍下来,基本上业务和相关功能就能了解大部分了。如果是新功能研发的话,可以先找研发询问当前新功能开发中会影响到的其他模块,然后对照新功能的需求文档和设计原型将新功能的测试用例补全,做到对新功能的测试点心中有数,这样对于后续展开的功能测试会有很大帮助,对当前版本的质量把控也能有一定的帮助。
接下来是性能,性能包含很多种,最基础的是以下几点:
压力测试:强调极端暴力,用于测试极端条件下的软件的运行情况;
稳定性测试:在一定压力下,长时间运行的情况 ;
基准测试:在特定条件下的性能测试 ;
负载测试:不同负载下的表现 ;
容量测试:最优容量;
性能测试一般进行于功能测试已经通过之后,相比较功能测试要求的软件质量,性能测试会要求的更高,目的是为了测试出当前软件版本包括当前软件版本关联到的相关硬件质量的极限阈值。了解到了极限阈值后,不管是进行性能优化又或者是以后的运维,都是有着很大的帮助。体现在我们平时测试就会有最基础的响应时间,如果是app的话还会包含内存、CPU、IO等内部指标,更具体的可以参考我另外一篇随笔转载的性能指标。
然后是安全性,我们最基础也最常见的,就是登录窗口请求的账户信息是否加密,当然这种测试仅仅只能算皮毛中的皮毛,只是给我们一个安全性的概念罢了。就目前功能测试的范畴中而言,可以考虑三个方面:
-
第一个方面:用户程序安全。
① 明确区分系统中不同用户权限;
② 系统中会不会出现用户冲突;
③ 系统会不会因用户的权限的改变造成混乱;
④ 用户登陆密码是否是可见、可复制;
⑤ 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统);
⑥ 用户推出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统。
-
第二大方面、系统网络安全。
① 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上;
② 模拟非授权攻击,看防护系统是否坚固;
③ 采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,现在最常用的是 NBSI 系列和 IPhacker IP);
④ 采用各种木马检查工具检查系统木马情况;
⑤ 采用各种防外挂工具检查系统各组程序的客外挂漏洞。
-
第三大方面、数据库安全。
① 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求);
② 系统数据的完整性;
③ 系统数据可管理性;
④ 系统数据的独立性;
⑤ 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)。
如果说需要更深一步进行安全性测试的话,就需要渗透或者其他相应的知识基础了,但是就当前功能测试的范畴中,这三个方面已经足够了。
其次是易用性,简单来讲就是是否能让用户快速上手,方便使用。
基本上是安装易用性:
对安装手册和安装平台的评估
对安装的自动化程度测试,比如安装尽量全部自动化,手工的要尽量采用选择框等措施
安装选项和设置的测试
安装过程的中断测试,如断电、文件冲突等
对多环境安装测试,如标准、最低、笔记本等环境中测试
对安装的正确性测试,如考察对其他应用程序是否有影响
修复安装测试与卸载测试,如检查修复安装后是否有不良影响,是否能完全卸载,不能完全卸载时有无明确提示等
功能易用性:主要测试业务符合性、功能定制性、业务模块的集成度、数据共享能力、约束性、交互性和错误提示等
界面易用性:主要测试功能展示页面的便捷性
辅助系统易用性:也就是指帮助、向导和信息提示等辅助功能的文本或者图案或者视频是否通俗易懂。
最后说一下兼容性,这方面的测试前期虽然也存在,但是更为侧重在软件已经较为成熟后,也就是软件研发的中后期进行的一项测试。从最基础的平台兼容性,比如安卓、iOS端、windows端、linux端、mac端、web端的浏览器版本等等,比较细化的版本兼容、软件和第三方的兼容、比如显示屏之类的硬件兼容等等,更为细化的软件内功能与功能之间的兼容性等等。兼容性测试也算是功能测试中的一个大类,日常维护中也容易接收到一些稀奇古怪无法复现的bug,其中一部分就是因为兼容性这方面而引发的。网上也存在一些工具用于帮助兼容性测试的,比如wetest等。