这个学期很开心可以和一帮兄弟姐妹们一起做软件写代码,总体看下来真的是充满哦了艰辛和困苦。虽然我是负责软件测试的这一块的,但是看着他们辛苦的写代码我也很是为他们着急和心疼。毕竟,编译当头,数据库辅助,每周总会是在两科科课设中度过的,有时候甚至是忙到不睡觉。不过再怎么说我们还是坚持下了,或多或少总有些收获。
总结
前期的工作需要我在写代码的不是很多,但是我们是一个团队,作为团队的一员我也没有闲着,平时看看他们都代码,了解编程人都思想,自己学学单元测试和软件的使用都是必不可少的。现在一个编程团队不光是有程序员,还有为程序员服务的人员,有时候我也会充当一下程序员鼓励师激励他们继续前行不要灰心,又是也会充当快递员,帮忙买个饭取个东西。尽管很琐碎,但是还是细节很重要的。
什么是软件测试
软件测试定义是:为了发现程序中的错误而执行程序的过程
它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。
软件测试的目标:
(1)测试是为了发现程序中的错误而执行程序的过程;
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
(3)成功的测试是发现了至今为止尚未发现的错误的测试。
软件测试的内容:
软件测试主要工作内容是验证(verification)和确认( validation ),下面分别给出其概念:
验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。(Do the right thing)
1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;
2.程序正确性的形式证明,即采用形式理论证明程序符号设一计规约规定的过程;
3.评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。
确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件(Do it right)
1.静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;
2.动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。
软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。
关于测试
我的测试主要是队代码进行单元测试和对软件本身进行使用者的测试。经过一些列的测试我发现了很多Bug,比如用户名开头加上空格之后会认为是错误用户名,在用户名中间加上空格之后会发现检测检测的同户名重复等。还有就是效率在单元测试的时候我发现有的代码效率很低导致运行时间过长。算法是效率的关键,但选择合适的算法也并非是一件十分容易的事情。我们都知道一个算法它有时间复杂度,空间复杂度等等,但这些是什么呢?是从数学角度得出的“理论值”。一个算法的时间复杂度,考虑的是算法的时间随规模增长的变化规律,它能确保的只是“当规模大到一定程度时”,时间复杂度低的算法效率肯定相对较高。但是在实际开发过程中,我们遇到的数据量往往都是有限的,其形式甚至还有一定规律可循。因此,“理论上”时间复杂度低的算法,并非时时刻刻都有上佳表现。
例如,对于一个已经排序的数组来说,冒泡排序的性能无人能敌;对于一个高效的快速排序算法来说,如果元素数量少于一个阈值时就会使用插入排序(因为快速排序时间复杂度的常数较大);再比如,一个算法使用空间换时间,但是空间一大,物理内存中的数据可能就会被放到磁盘交换区上(也有人把它叫做虚拟内存,但是我不认同这个叫法),此时读取时可能就要从硬盘上重新加载数据页,性能可能就更低一些了。说个更近的,有时候,每次都缓存对象,性能反而比缓存起来要高,不是吗?最后是关于用户体验的测试,首先来讲,我们一开始的界面确实是太丑了,我们称之为“很简洁”。记得猪脚助教的评论是,如果用户用了你们的软件肯定会吓死的。如此说来确实是很恐怖的啦。于是我对于我们组的软件界面整体做了一个建议,整体颜色确定不要运用纯红色白色和绿色,这样的视觉冲击实在是太大了。。。。还有就是按钮可以再小一点,加上凹凸等效果,不要再一味的界面只有三个超大按钮再无他物。