首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
辅导Database|调试Matlab程序|解析Haskell程序|辅导留学生 Statistics统计、回归、迭代
项目预算:
开发周期:
发布时间:
要求地区:
ST COURSEWORK DESCRIPTION
February 25, 2021
1 SOFTWARE TESTING: PRACTICAL
This page describes the practical for the Informatics Software Testing course.
It will be marked out of 100 points, and is worth 45% of the assessment of the
course.
2 DEADLINE
The coursework comprises 3 tasks with the following issue dates and deadlines:
• Issued: 26th February
• Deadline : 26th March, 4pm GMT.
The policy for late submission has been modified this year because of the
pandemic, rather than following the UG3 course guide (http://www.inf.ed.
ac.uk/teaching/years/ug3/CourseGuide/coursework.html)
Coursework will be scrutinised for plagiarism and academic misconduct.
Information on academic misconduct and advice for good scholarly
conduct is available at https://web.inf.ed.ac.uk/infweb/admin/policies/
academic-misconduct.
3 TOOLS
You can choose to use the Eclipse IDE, another IDE such as IntelliJ IDEA, or
just to use JUnit and other appropriate tools of your choice standalone. I have
no strong preference – many people find the tools available in Eclipse useful (if
you haven’t used Eclipse before maybe now is the time to give it a try). You
can discuss your choice and problems you come across with the tools (without
sharing specifics of your coursework solutions) on Piazza, but note that toolwrangling
is part of what this coursework is intended to help you learn so it is
ultimately your responsibility to get your chosen tools to work. Don’t leave
it to the last minute!
The rest of this handout is written mostly as though you were using Eclipse.
You will need some of the following:
1
1. JUnit 4. If necessary you can download JUnit from https://junit.
org/junit4/. If you are using Eclipse it is probably already installed in
the IDE. This article: https://www.vogella.com/tutorials/JUnit4/
article.html is a reasonable introduction to using JUnit4 with Eclipse.
2. You will need some kind of coverage analysis tool:
• In Eclipse you can use EclEmma: https://www.eclemma.org/. If
you use Eclipse on DICE, or if you install the version of Eclipse that
is current at the time of writing (2020-12) and select “for Java developers”
when asked, this should already be installed, and is accessible
as “coverage” from the toolbar or Run menu. If not, it’s easy to install
through Eclipse’s built in software update mechanism. IntelliJ
IDEA also has a built-in coverage module.
• For stand-alone coverage you should consider something like Cobertura:
http://cobertura.github.io/cobertura/
• A review of other OpenSource code coverage tools for Java is available
at https://java-source.net/open-source/code-coverage.
Most of the tasks have an associated tutorial which will help you prepare for
it. Please prepare in advance for the tutorial to get the most out of it.
4 SETTING UP
4.1 Preparation
If you don’t have Eclipse installed and want to use it, you should download it and
install it. You can find Eclipse at https://eclipse.org/users/. You want
“for Java developers” when asked. This will come with JUnit and EclEmma
pre-installed. Eclipse’s help menu leads to a lot of information, some of which
is outdated: you may wish also to consult the links given above.
5 TASKS
5.1 TASK 1: FUNCTIONAL TESTING (25 POINTS)
In this task you will implement JUnit tests using the specification provided
in the Github repository (https://github.com/SoftwareTestingEdinburgh/
STCOURSEWORK2021). The repository also provides the implementation as a JAR
file, ST COURSEWORK.jar, so you can execute your JUnit tests and observe test
results. The specification is described in detail, with helpful examples where
necessary, in the Specifications.pdf file.
Functional testing is a black box testing technique, so use the specification
file to derive tests and NOT the source code. The JAR file can be
2
used to execute the tests derived from the specification. We have also provided
a sample JUnit test case, CommandLineParserTest.java file, to illustrate
a typical test case for the implementation in ST COURSEWORK.jar. All
the files referred to above can be found at the Github repository (https:
//github.com/SoftwareTestingEdinburgh/STCOURSEWORK2021).
For this task, our ST COURSEWORK.jar file contains 13 different bugs. The
estimated difficulty of finding these bugs ranges from easy (5 bugs), to medium
(4 bugs), to hard (4 bugs). Easy bugs will rewarded as 1 point, Medium bugs
will be rewarded as 2 points, and Hard bugs will be rewarded as 3 points. If you
are able to find all of them, you will get full points(25) from this task. “Finding”
a bug means writing a test which should pass according to the specification, but
fails on the provided implementation.
Deliverables:
• A file Task1 Functional.java that contains your JUnit tests.
SUBMISSION: Submit on Learn, just as you have for tutorials.
6 TASK 2: COVERAGE ANALYSIS (30 POINTS)
6.1 TASK2.1: Analyzing Code Coverage (10 POINTS)
The goal of this task is to measure and analyze the branch coverage of the
STCOURSEWORK2021 code achieved by executing the test cases developed in
Task 1.
Deliverables
• A file task2-1.jpg containing a screenshot of the branch coverage report
as shown by the coverage measurement tool. Please make sure that the
total branch coverage is clearly visible in the screenshot.
SUBMISSION: On Learn.
6.2 TASK2.2: Generate Automated Test Cases with EvoSuite
(15 Points)
For this task, you will use EvoSuite to generate test cases for the project. EvoSuite
is a tool that automatically generates test cases with assertions for classes
written in Java code. To achieve this, EvoSuite applies a novel hybrid approach
that generates and optimizes whole test suites towards satisfying a coverage
criterion. You can find detailed information at https://www.evosuite.org/.
For a modern Java version, you will need to use the latest version, 1.1.0, of
evosuite. At the time of writing, this is not available as a maven plugin, so you
3
will need to follow the instructions for using evosuite from the commandline.
Then, if you are using a coverage tool in an IDE, you will need to import the
generated tests into the IDE.
Deliverables:
• A folder Task2-2. This folder should contain
1. A file task2-2.jpg which shows the branch coverage report achieved
by EvoSuite test cases. Please make sure that the total branch coverage
is clearly visible in the screenshot.
2. All of the generated test case files that were generated by EvoSuite.
SUBMISSION: On Learn.
6.3 TASK2.3: Advantages and Disadvantages of automated
test generation Tool (5 points)
In this task, you will state three advantages and disadvantages of using automated
test generation tool. Focus on questions such as:
• Why do we use automated test generation in the real world?
• How effective is it to use test generation tools for big projects?
Deliverables: A plain text file Task2 3.txt with a brief reflection, organized
as a list of bullet points, of advantages and disadvantages of using automated
test generation tools such as EvoSuite.
SUBMISSION: On Learn.
7 Task 3: Adding Functionality with Test-Driven
Development (45 points)
A TDD approach is typically interpreted as “A programmer taking a TDD approach
refuses to write a new function until there is first a test that fails
because that function is not present.” TDD makes the programmer think
through requirements or design before they write functional code. Once the
test is in place the programmer proceeds to complete the implementation and
checks if the test suite now passes. Please keep in mind that your new code
may break several existing tests as well as the new one. The code and tests
may need to be refactored till the test suite passes and the specification is
fully implemented. In this task, you will need to follow the TDD approach
to implement and support a new additional specification in the existing implementation.
The new additional specification is described in the last two pages
4
of the specification file, available in Github repository (https://github.com/
SoftwareTestingEdinburgh/STCOURSEWORK2021).
Deliverables: This task will involve a 2 part submission.
1. Part 1: Tests
Submit only your new JUnit tests in a file named Task3 TDD 1.java,
for the new additional specification (last 2 pages of the specification document).
Please check to make sure all of these new tests fail on the existing
implementation available in the src folder.
2. Part 2: Implementation + Tests
This part requires that you add source code to Parser.java in the src
folder to support the new specification. Check whether all the tests you
developed in Part 1 pass for your modified implementation. If they don’t,
modify the implementation and/or tests so the entire test suite passes and
the new specification is implemented correctly. Name your modified collection
of new tests Task3 TDD 2.java (even if it is, in fact, identical to the
file you submitted as Task3 TDD 1.java in Part 1). Submit both the modi-
fied implementation of Parser.java and the test suite Task3 TDD 2.java.
PS: For Task 3, your require implementation need only modify the
file Parser.java. Please do not touch other java files.
SUBMISSION: On Learn.
5
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
代做ceng0013 design of a pro...
2024-11-13
代做mech4880 refrigeration a...
2024-11-13
代做mcd1350: media studies a...
2024-11-13
代写fint b338f (autumn 2024)...
2024-11-13
代做engd3000 design of tunab...
2024-11-13
代做n1611 financial economet...
2024-11-13
代做econ 2331: economic and ...
2024-11-13
代做cs770/870 assignment 8代...
2024-11-13
代写amath 481/581 autumn qua...
2024-11-13
代做ccc8013 the process of s...
2024-11-13
代写csit040 – modern comput...
2024-11-13
代写econ 2070: introduc2on t...
2024-11-13
代写cct260, project 2 person...
2024-11-13
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!