软件测试和评估

1、基本任务:功能任务和测试管理

(1)计划说明

a、对比测试产品:

     百词斩,扇贝单词

b、测试进度表

项目

内容说明

预估耗时

(分钟)

实际耗时

(分钟)

Planning

  1. 计划
             20             30

· Estimate

· 估计这个任务需要多少时间

            60             70

Testing Design

  1. 测试设计
            40            40

· Analysis

· 需求和测试需求分析

            30            40

· Design Test Cases

· 设计测试用例

           30              30

Testing Environment

  1. 搭建测试环境(安装测试工具、管理工具等相关运行和支撑软件)
           30            40

Testing Implementation

  1. 测试实施
           20            30

· Test

· 执行测试

          30           30

Reporting

  1. 报告
           30            40

· Test Report

· 测试报告

          30           30

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

           40           50

合 计

           360          430

 

(2)需求说明

a、功能模块划分图

                                  

百词斩商城/推荐,课程功能模块需求说明

扇贝单词商城/推荐,课程功能模块需求说明

b、本人负责的功能模块:

      商城/推荐,课程

 

(3)测试说明

a、测试用例的设计思路

 等价类测试:界面跳转测试,所有界面跳转划分成一个等价类,对该等价类进行测试。

边界值测试:界面响应测试,网络延迟一定的情况下,测试界面的响应时间。

场景测试:(1)场景:新手用户在“商场/推荐”功能中根据推荐选择应用或者相关商品,在“课程”功能中选择需要的课程。

                  (2)所有测试用例基于以上场景

业务流程图:

 

百词斩测试用例:

扇贝单词测试用例:

缺陷:

 

b、测试执行的部分操作和运行界面截图

c、测试管理工具

     名   称:禅道

     版本号:7.4.beta

     链   接:http://www.xiazaiba.com/html/45269.html

d、测试管理工具使用的关键界面截图(测试用例导出、缺陷导出等)

(4)结论说明

         就上线很久的单词学习app来说,百词斩和扇贝绝对算得上是老牌的app,在客户调研和测评使用方面很定下了一定的功夫,所以bug的话还是很难找出来的,但是通过对比性功能测试,可以找出app相比于其他竞争产品的不足之处。       

        商城/推荐:扇贝单词在app内有商城,相比于百词斩跳转到淘宝首页来进行挑选,感觉更清爽,没有多余的操作,这样就提高了用户黏度,改善了用户体验性。另外百词斩没有应用推荐,在应用推荐这方面远没有扇贝单词做得好。

        课程:课程这个功能模块上百词斩也有些不足,首先在课程里没有对用户需要的模块进行细化,如四、六级,托福,雅思,听力,阅读等。这无疑会增加用户在搜索这些功能所花费的时间,当然用户花的 时间长,体验性就下降了。相反,扇贝单词就划分的很明确,用户可以清晰地浏览自己需要寻找的模块进行学习。

(5)工作说明

         各组员都是:0.25

 

 

 

2、扩展任务:用户调研和可用性测试

      见毕博可用性测试报告

 

 

 

3、高级任务:专题测试

(1)测试专题:GUI界面测试

         测试工具:UiAutomator(Android-SDK)  Android开发包的UI测试工具

                           ADB Driver        连接Android的ADB驱动

                           python3.5          脚本测试语言

 

(2)GUI界面测试的核心思想:

          首先,不得不承认,GUI测试重点是正确性,易用性和视觉效果,文字检查和拼写检查是GUI测试的重要环节。如果敲完一个完整的GUI界面测试的脚本,量还是很大的,毕竟用Python+UiAutomator是纯手敲脚本,没有自动生成的的骚操作。

          所以核心思想是测试GUI界面功能的正确性和可用性:利用Pyhton脚本对百词斩进行自动化测试,测试界面功能的正确性和可用性。

 

(3)测试设计:

          一般的GUI测试步骤包括:录制脚本,运行脚本,观察测试日志,报告缺陷,重复运行脚本等步骤。

          但是由于没有使用脚本自动生成工具,所以我的步骤为:编写测试脚本,编写测试用例(预期输出),观察脚本运行结果,重复运行脚本。

          1、利用UiAutomator手动获取界面控件id

          2、Python脚本+ADB驱动,对界面控件执行点击操作

          3、GUI自动化测试

          4、对比测试用例,查看功能的正确性和可用性。

          5、重复运行脚本

 

 

 

(4)编写测试脚本: 

 1 #  -*- coding:utf-8 -*-
 2 from uiautomator import device as d
 3 import unittest
 4 import time
 5 
 6 class Mytest(unittest.TestCase):
 7     #初始化工作
 8     def setUp(self):
 9         print ("--------------初始化测试")
10     
11 
12     # 退出清理工作
13     def tearDown(self):
14         print ("--------------退出测试\n\n")
15         
16          
17 
18     def test1(self):
19         d(text="百词斩").click()
20         print("GUI界面专题测试")
21         print ("--------------测试背单词")
22         d(resourceId="com.jiongji.andriod.card:id/tt").click()
23         time.sleep(6)
24         d(resourceId="com.jiongji.andriod.card:id/k").click()
25         print("test1 success!")
26         time.sleep(6)
27        
28     def test2(self):
29         print ("--------------测试单词电台")
30         d(resourceId="com.jiongji.andriod.card:id/ty").click()
31         time.sleep(6)
32         d(resourceId="com.jiongji.andriod.card:id/k").click()
33         print("test2 success!")
34         time.sleep(10)
35     def test3(self):
36         print ("--------------测试单词TV")
37         d(resourceId="com.jiongji.andriod.card:id/tz").click()
38         time.sleep(6)
39         d(resourceId="com.jiongji.andriod.card:id/k").click()
40         print("test3 success!")
41         time.sleep(6)
42 
43     def test4(self):  
44         print ("--------------测试爱阅读")
45         d(resourceId="com.jiongji.andriod.card:id/u1").click()
46         time.sleep(6)
47         d(resourceId="com.jiongji.andriod.card:id/dq").click()
48         print("test4 success!")
49         time.sleep(6)
50         
51     def test5(self):
52         print ("--------------测试复习")
53         d(resourceId="com.jiongji.andriod.card:id/he").click()
54         time.sleep(6)
55         d(resourceId="com.jiongji.andriod.card:id/hd").click()
56         print("test5 success!")
57         time.sleep(6)
58 
59     def test6(self):
60         print ("--------------测试小讲堂")
61         d(resourceId="com.jiongji.andriod.card:id/hg").click()
62         time.sleep(6)
63         d(resourceId="com.jiongji.andriod.card:id/hd").click()
64         print("test6 success!")
65         time.sleep(6)
66 
67     def test7(self):
68         print ("--------------测试周边")
69         d(resourceId="com.jiongji.andriod.card:id/hh").click()
70         time.sleep(6)
71         d.press.back()
72         print("test7 success!")
73         time.sleep(6)
74 
75     def test8(self):
76         print ("--------------测试圈子")
77         d(resourceId="com.jiongji.andriod.card:id/hi").click()
78         time.sleep(6)
79         d(resourceId="com.jiongji.andriod.card:id/hd").click()
80         print("test8 success!")
81         time.sleep(6)
82      
83     def test9(self):
84         #d.press.back()
85         d.press.home()
86         d.press.recent()
87         time.sleep(3)
88         d.swipe(200, 500, 200, 0, steps=10)
89         d.press.home()
90         
91         print (u"关闭APP")
92         
93 if __name__ == '__main__':
94         unittest.main()

 

(5)执行测试,运行视频:

         什么?视频要1280*720的...... 惹不起,惹不起

         又用OpenCV写了个转视频分辨率格式的脚本。。。。。

         Hard Code Everywhere。。。。。

 1 import numpy as np  
 2 import cv2
 3 
 4 
 5 cap=cv2.VideoCapture("4.MP4")
 6 fourcc = cv2.VideoWriter_fourcc(*'XVID')
 7 out = cv2.VideoWriter('output.avi',fourcc, 20.0, (1280,720))
 8 
 9 while(cap.isOpened()):
10     ret,frame =cap.read()
11     size = (1280, 720)
12     enlarge = cv2.resize(frame, size, interpolation=cv2.INTER_AREA)
13     center=(640,360)
14     M=cv2.getRotationMatrix2D(center, -90, 1.0)
15     rotated = cv2.warpAffine(enlarge, M, size)
16     cv2.imshow('frame',rotated)
17     out.write(rotated)
18     if 0xFF & cv2.waitKey(20) == 27:
19         break
20 cap.release()
21 out.release()
22 cv2.destroyAllWindows()

 

 

(6)定性和定量的测评结论:

         定性测评结论:d、好,不错

         定量测评结论:

  类别 描述 评分 (满分 10 分, 良好 6 分,  及格 4 分,聊胜于无 1 分, 很差 -3 分)
功能 核心功能 分析三个核心功能,功能设计和质量。                  8
细节 有什么为用户考虑的细节?                  9
用户体验 当用户完成功能时,不干扰用户 (例如: 是否不断弹出不相关广告)。                   8
辅助功能 一些辅助功能如皮肤等                  6
差异化功能 这个软件独特的功能.  它对用户的吸引力有多大?                   9
软件的效能 占用内存, 启动速度, 内存泄漏情况                  7
体验 软件的适应性 在联网/断网, 大小屏幕, 没有鼠标的情况下都可以顺畅操作. 和不同平台的软件能流畅协作                 10
成长性 记住用户的选择, 适应用户的特点,用户越用越方便                  7
用户有控制权 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。                  8
自选 自选评分项目 针对软件的特点, 自己选择一个上面没有覆盖的领域来评分          交互性: 8

 

(7)高级任务中的工作感受:

        就简单谈一下我对GUI界面自动化测试的感受,一开始没有翻到有附录五,不知道推荐了移动app测试的工具,自己在网上找资料,搜到了利用UiAutomator进行UI测试。也是碰巧,在寒假电脑装好了Android-SDK,前不久又安装好了ADB Driver,对Android机进行调试。所以在做高级功能时我已经把环境都配好了,配好的环境相当于写完了一半,嘿嘿。

        然鹅。当我写完Pyhton脚本时才发现原来其他工具是自动生成脚本的,一口老血...

        好了,说点专业的。在毕博的讲义上谈到的测试工具是有脚本录制,然后进行重现。我用代码代替了脚本录制,也就是预先估计输入,预测输出,查看结果是否正确,如果正确,则测试结果正常了。不过还真遇到一个问题,以前没写过Andriod,不知道怎么获取content-desc控件的值进行点击,到现在找了好多资料还没找到,有知道的,在线等。。。只好back一下了,假装返回了上一层级。

 

(8)对三次实践作业的看法:

         首先,我很肯定老师负责任的态度,在大三下还对我们这么严格的老师不多。

         就简单说一下我对作业的看法,所有的编程作业我觉得都不难,还有点easy,但是说实话,看到每次毕博上一大堆和作业有关的要求就。。。密集恐惧症坚定无疑。限制好多,每一个题的限制绝对是我在大学以来做过的最多,所以每次码完解决了,转过头一看,gg,要求又没看到,又要改,而且第一次的WordCount,需求真是改到爆炸,充分体验了乙方的痛苦。所以我觉得这些题真的不难,就是耗费了我大把的时间。

         另外我是一个比较讨厌写文档的人,如果你单单只是让我分享一下编程、测试的知识,技巧,我会很乐意,但是你要让我写这么多条条框框的博客,我就觉得没有太大意思,毕竟没一个好的心情,就算做的再好也不太想分享,条条框框也限制了我想分享的方面。

        其次,我比较建议这门课开设在大一,虽然大一的撸代码差一些,但是他们有大把的时间可以挥霍,大三的腊肉实在是没时间了,在大一绝对有激情慢慢搞,大三了确实没兴趣做这些简单的编程题目,而且对编程水平感觉没有太多的提升。

        最后,还是肯定一下我在这门课上学到的一些东西,比如单元测试怎么做,自动化测试怎么做之类的,以前在写代码时基本不太关注测试,现在因为这门课都慢慢开始对测试重视起来了。

 

(9)工作说明:

         还是人均0.25算了.....

         

 

posted @ 2018-04-23 22:18  Who_Named_Cody  阅读(260)  评论(0编辑  收藏  举报