美文网首页
浅谈C#控件测试方法

浅谈C#控件测试方法

作者: 恒生GTN | 来源:发表于2017-03-16 16:59 被阅读120次

    C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言,由C和C++衍生出来的面向对象的编程语言。作为一种安全、稳定、简单、优雅的语言,其控件功能也是丰富、稳定,而测试则是保证其质量的必不可少的标配。本文基于WPF版本对控件测试的方法进行了归纳和总结,希望对刚接触控件测试的小伙伴有所帮助。

    01

    测试方法

    控件的功能可以分为两类:属性和事件。

    1、属性

    为了优化测试流程,我们将属性测试分为两个阶段:设计期和运行期。

    ● 设计期:主要验证无需运行程序即可使用的功能,如属性说明、属性默认值等

    ● 运行期:主要验证程序运行时呈现的功能,如获取或者设置属性值等

    这样划分还有一个好处,如果该项目要实现自动化,那么只需要将运行期用例自动化即可,因为设计期一般不会做改动。

    控件众多,属性众多,但无外乎这几类:

    ● 颜色类:如背景色、前景色,值域为可表示颜色的值

    ● 数值类:如控件的宽度或者高度,值域是数值,不能是其余文本

    ● 文本类:如控件的Label值,值域是字符串

    ● 布尔类:如控件是否可见,值域是布尔值

    ● 下拉类:如图片与文字的布局方式,值域是布局方式的枚举类

    02

    1.1设计期

    所有属性的设计期用例设计均可使用同一个模板,如下:

    说明:前置条件

    在xmal编写脚本新增控件

    1)如果属性不能恢复为默认值,表示内部赋值逻辑有问题,将导致正常修改属性值

    2)设置为值域范围外的值,主要是为了校验数据输入的合法性,如果未做保护,将会增加业务开发引入BUG的可能性,大大影响用户体验

    3)属性说明力求简洁清晰,辅助用户了解属性功能

    03

    1.2运行期

    属性运行期的场景较为复杂,但离不开一个核心,那就是对属性值的修改,修改后界面效果

    需要符合预期,获取的属性值必须正确。

    属性的修改一般有三个入口:

    1)设计期,在属性设置窗口修改属性值,然后运行程序

    2)运行期,通过代码修改属性的值

    3)运行期,通过界面修改属性值,如在文本框中输入文字即修改了属性Value的值

    ● 颜色类

    颜色类运行期用例设计如下:

    说明:因为无法在界面中直接修改颜色的值,因此该场景无需测试。

    ● 数值类

    数值类运行期用例设计如下:

    说明:该例子为Width类属性运行期的用例设计。

    该类属性需要注意边界值的测试,如-1、0、1、最大值、最小值、小数等。

    如果该属性不能取负值,如上图中的例子,则需要测试代码中设置负值的场景,应不能设置

    成功,且无异常。

    ● 文本类

    文本类运行期用例设计如下:

    说明:该类属性除了边界值的测试外,还需要测试各种特殊字符的场景。

    ● 布尔类

    布尔类运行期用例设计如下:

    说明:

    布尔值类的测试场景较简单,主要是效果正确,且获取属性值正确。

    由于该属性在属性设计窗口不可见,只能通过代码修改,因此未区分是在属性设置窗口修改

    值还是在代码中。

    ● 下拉类

    下拉类运行期用例设计如下:

    说明:该类属性的测试也比较简单,因为值域固定,无需测试异常场景,只要下拉框中的值

    依次测试即可。

    ● 事件

    下拉类运行期用例设计如下:

    说明:

    1)一个事件只能触发一次,触发多次则属于缺陷

    2)事件多次触发一般发生在如下场景:

    ■ 较多功能点交叉

    ■ 不同场景重复切换

    04

    总结

    控件测试工作量大,且易产生疲劳感,将属性进行归类,是测试规范化的一种体现,将让测

    试工作事半功倍:

    1)提高用例编写效率,也为之后的用例评审理清了思路,同时提高了用例评审效率。

    2)相同类型的用例一起执行亦可提高用例执行效率。

    恒生开发者社区-恒生电子面向所有开发者提供的服务分享、技术交流和互联共通等一站式服务平台。

    文章来源:恒生技术(文/王婷婷)


    相关文章

      网友评论

          本文标题:浅谈C#控件测试方法

          本文链接:https://www.haomeiwen.com/subject/ewyjnttx.html