This is an old revision of the document!
Table of Contents
Course Outline
<!--
Study materials and lab tasks will be posted here.
https://www.linkedin.com/learning/programming-foundations-software-testing-qa
4.Bug Reporting
https://www.linkedin.com/learning/nail-your-software-tester-interview/solution-bug-reporting
-->
Week 8 (to be completed by Wednesday, March 17)
Due
There are two things due this week:
- The lab task as described below.
- The current version of your system. See the PeerScholar submission link for more details.
Study material
This week we take a look at testing again. These slides discuss the two topics we will focus on:
- Test coverage. Start by watching this instructor video on the topic. The code in the video is in the TestCoverage project in this github repository. Next, update your system to use JaCoCo and create test coverage reports. Work on improving the coverage of your test code.
- GUI testing. Start by watching this instructor video on the topic. The code in the video is in the JavaFXSample project in this github repository. Next, check out the TestFX github page for more information. Add appropriate GUI test cases to your system.
Lab task
Demonstrate to the TA the code coverage for the part of the code that you are responsible. Briefly discuss how you plan to improve the coverage of your tests.
Weekly goals
- Learn about code coverage
- Learn about GUI testing
- Repeated from last week: Study the additional requirements posted about the project and start implementing them
- Produce a version of the system that implements as many requirements as possible for submission on Wednesday, Mar 17.
Week 7 (to be completed by Wednesday, March 10)
Due
The only thing due this week is the lab task below.
Optional but recommended: For Peer Assessment 2, rate the feedback you received (as a team), and/or rate your group members on their contributions until the midterm submission.
Study material
The final submission will be similar to the midterm submission, except it will also contain a Design Document (worth 20% of the final submission). Our target this week is to start working on this document by creating diagrams describing the system you are developing.
Start by watching this online course on UML and its diagrams. Focus on the following types of diagrams: activity, class, sequence, and object. Study other types of diagrams for your own interest.
Select a tool that you will use for such kind of diagrams (as a software engineer you'll have to do these quite often). You can use any number of tools (see complete list below) including dedicated UML tools, such as PlantUML, or drawing tools with UML support such as diagrams.net.
These slides present the purpose of the design document and emphasize some of the points made in the course as well.
You may also find useful these tutorials on different kinds of UML diagrams, as well as this list of UML tools.
Lab task
Each student must draw two diagrams describing an aspect of the system.
The two diagrams cannot be of the same type. Choose two of the following types of diagrams: activity, class, sequence, and object.
Groupmates can choose the same type of diagram but they must describe a different part of the system, e.g. one prepares a sequence diagram related to input parsing, another prepares a sequence diagram related to MusicXML creation.
Describe both diagrams to the TA in the lab session.
Weekly goals
- Learn about design documentation and the corresponding UML diagrams
- Create the first draft of the design document including the diagrams prepared for the lab task
- Study the additional requirements posted about the project and start implementing them
Week 6 (to be completed by Wednesday, March 3)
Due
The only due item this week is the midterm project submission for the project, which is due on Sunday, February 28 at 11:59pm. Submission instructions can be found in these slides.
There is no study material or lab task due this week. Any student that has missed a lab task will have a chance to re-take it during the Wednesday meeting (first come - first serve).
The progress report meetings for this week will be your chance to present your midterm submission to your instructor and, perhaps more importantly, to the TA that will mark it. It is recommended that you practice your presentation before the meeting so you can highlight all the cool features of your app, while showing all important use cases.
Lab task
No lab task this week. The TAs will be available at the usual time for any make-up lab tasks required.
Weekly goals
- Study the peer feedback you will receive for your app
- Finalize the code of your midterm submission as in the above instructions
- Finalize all three documents
- Submit midterm submission by Sun Feb 28
- Prepare a nice demo/presentation for your app for the next progress meeting
Week 5 (to be completed by Wednesday, February 24)
Due
This week lasts for two weeks due to Reading Week. There is a lab task due on the Wednesday after Reading Week as usual. The second peer assessment will take place over the space of these two weeks:
By Wednesday, February 17, submit a prototype + User Manual of your system as a team. Make sure that your instructions are clear so that your peers can run your prototype successfully. Note that you are not being graded on the quality of your prototype at this point. This is for you to receive feedback on what you have done so far.
By Wednesday, February 24, each student has to submit feedback on the prototypes and User Manuals that are assigned to them in PeerScholar. A rubric for how your feedback will be graded has been added to the Assess Phase description.
Study material
Our target this week is to start using Gradle to build our system, run our tests, and manage any library dependencies.
Start by watching this instructor video, on how to set up your Gradle build script in Eclipse. This should be all you need in order to use Gradle in your system so that your peers can run your system without worrying about library dependencies. The build script developed in the video is here. Replace the one in your system with it, and customize the main class name.
These slides present the main points about Gradle made in the video as well.
For more information on Gradle, this online course on Gradle basics, and this course on Gradle and Java will help you understand how to write Gradle build scripts, and what is happening behind the scenes. These courses do not use Eclipse, so focus on concepts rather than syntax.
Lab task
For this week's lab task, you must complete the transition to using Gradle for your system. Demonstrate building and running your system using Gradle under Eclipse to the TA.
Weekly goals
- Learn about Gradle
- Use Gradle in order to build and run your application and test code
- Submit the prototype and user manual of your system by Wed Feb 17
- Provide feedback on the prototypes and user manuals you will be assigned
- Continue developing your application and test code and the documentation (Requirements, Testing, User Manual) of your system.
Week 4 (to be completed by Wednesday, February 10)
Due
Apart from the usual lab task due during Wednesday's meeting, this week each student has to submit feedback on the Requirements Documents that are assigned to them in PeerScholar. A rubric for how your feedback will be graded has been added to the Assess Phase description.
Study material
Our target this week is to start on our system's testing. The system you are developing in this course must be fully tested. We will use the JUnit framework to do this.
Start by going through this online course. Focus on these videos: 1-5, 7-12, 14-17. You can ignore videos 6 and 13 on Maven. We will discuss Gradle and JUnit next week. Maven and Gradle projects have the same folder structure, so the rest of the course applies to our course. Videos 18 and after are more advanced features of JUnit that are good to know but not necessary for this course.
These slides present the main points about JUnit as well. To get the Counter example, check out the EECS 2311 project from https://github.com/biltzerpos/TeachingCode
You can find detailed information about JUnit 5 in its official documentation (use only as reference).
Lab task
For this week's lab task, write 3 separate JUnit test cases for some of the code you have developed so far for the project. Describe them to the TA and demonstrate running them.
If your code is not easy to test (e.g. you have been working on the GUI), you can develop test cases for a part of the system written by one of your teammates.
Weekly goals
- Understand JUnit
- Start writing test code for all the application code in your project
- Start documenting the tests you are creating in a Testing Document (it will be part of the midterm and final submission)
- Provide feedback on the Requirements Documents you will be assigned
- Have a prototype of your system that runs end-to-end to demonstrate to your customer at the end of the week
Week 3 (to be completed by Wednesday, February 3)
Due
Apart from the usual lab task due during Wednesday's meeting, this week your team has to submit a first draft of the Requirements Document. See the Peer Assessment link in eClass for more details.
Study material
Our target this week is to finish the material on git by learning about git workflows, as well as to learn what goes in a requirements document, including use cases and user stories.
First off, for those of you still unsure about merges, when do they fail, what is a fast-forward merge etc, you might find this explanation helpful.
Next, we will learn about a method to organize the branches in our repository called Gitflow. Read the original description, as well as this explanation.
These slides present the main points from the above links, and describe how branches must be organized in EECS 2311.
Next, complete Sections 2 and 3 of this course (login with Passport York credentials). It is a very nice introduction to requirements and use cases. I particularly like the fact that clarity is emphasized over formality. For your Requirements document, also focus on a clear set of requirements and use cases without worrying about including all possible sections or following a particular format.
Lab task
Prior to the lab task demonstration, your team must organize the branches in your repository as outlined in the slides above.
For the lab task, demonstrate committing to your personal branch, then merging the changes to the develop branch, and finally pushing both the develop branch and your personal branch to github. To avoid conflicts, remember to pull the develop branch just before starting your demonstration.
Weekly goals
- Understand gitflow
- Organize your team repository according to gitflow
- Learn about requirements, use cases and user stories
- Finalize and submit the first draft of the system's Requirements document
- Your master branch now has the latest stable version of your system. You can always switch to it and demo to your customer.
Week 2 (to be completed by Wednesday, January 27)
Due
Only the lab task is due at the end of the week. The week after you will be submitting a first draft of the Requirements Document for the system, so you get started on it.
Study material
Our target this week is to learn how to work with branches in git, including resolving conflicts when they arise.
Start by completing this course (login with Passport York credentials). It is a very nice, detailed introduction to local and remote branches, including resolving conflicts. Even though this course is using git in the command-line fashion, it is important to understand it thoroughly. A lot of the command-line terminology shows up in Eclipse. If you are pressed for time, you can skip Section 5 on stashing changes, although it is a powerful tool you should learn how to use at some point.
Once you have completed the course above, watch this instructor video on how to do some of the command-line operations in Eclipse, using Egit. You can find the Egit documentation through Eclipse (Help → Help Contents). This tutorial is also quite helpful (you might want to become familiar with the way Egit decorates icons - scroll towards the end of the tutorial).
Finally, this is not required studying, but this is a handy page that lists everything you might need to remember about command-line git. It includes instructions on how to make your README file on github look nice.
Lab task
For this lab task, you will join the TA in groups of 2 or 3. Demonstrate creating a conflict by editing the same file at the same time. After one student pushes the update to the team repository, another must pull and resolve the conflict in any way they see fit. Each student must demonstrate the process of resolving the conflict.
Weekly goals
- Understand local and remote branches
- Learn what causes conflicts and how to resolve them
- Create a first runnable version of your system to demo during your progress report
- Continue with your draft of the system's requirements (what does the system do for the user)
Week 1 (to be completed by Wednesday, January 20)
Due
Only the lab task is due at the end of the week.
Study material
Our target this week is to learn the basics of git and github.
Start by making sure that all team members have completed the setup demonstrated in lecture. These slides list all the steps for that setup. A video of the instructor going through these steps can be found here. Added January 19: A short video on resolving .classpath conflicts.
Next, read the first three chapters of the Pro Git Book. Focus on the concepts of version control, not the command-line syntax, as we will use git through Eclipse. This set of slides describes the important concepts from these chapters as well.
For those of you that prefer videos to reading, this course is a great introduction to git (login with Passport York credentials). It also focuses on the command-line syntax of git which will not be a focus in this course, so focus more on the version control concepts.
Lab task
Prior to meeting the TA, ensure that your group repository contains a change to one of the files that does not exist on your machine (ask a teammate to push a change).
Demonstrate pulling the change, making a new change, and pushing it to the online repository.
Weekly goals
- Understand the basics of git
- Set up group repository, all members are able to push/pull
- Start coding
- Start on a draft of the system's requirements (what does the system do for the user)
- Prepare for the first meeting with your customer
Week 0
Topic: Course Introduction
Slides: Module 0 - Course Introduction
<!--
===== Week 1 =====
Topic: Introduction to the project
{{:module01-projectintroduction.pdf|Module 1 - Project Introduction}}
[[http://www.paulowe.com/venn_diagram_061119/activity.html|Example Venn diagram tool]]
===== Week 2 =====
Topic: Version Control
Slides: {{:module02-git.pdf|Module 2 - Version Control}}
Useful links:
[[https://book.git-scm.com/book/en/v2|Pro Git ebook]]
[[http://www.vogella.com/tutorials/EclipseGit/article.html|EGit tutorial]]
===== Week 3 =====
Topics: Gitflow
Slides: {{:module03-gitflow.pdf|PDF}}
Useful links:
[[https://www.campingcoder.com/2018/03/git-merges-demystified/|Git Merges Demystified]]
[[https://nvie.com/posts/a-successful-git-branching-model/|Original Gitflow description]]
[[https://www.campingcoder.com/2018/04/how-to-use-git-flow/|Another Gitflow description]]
===== Week 4 =====
Topics: Test-Driven Development, JUnit
Slides: {{:module04-junit.pdf|PDF}}
Code: Check out the EECS 2311 project from [[https://github.com/biltzerpos/TeachingCode|https://github.com/biltzerpos/TeachingCode]]
Useful links:
[[https://junit.org/junit5/docs/current/user-guide/| JUnit 5 documentation]]
===== Week 5 =====
Topics: Test code coverage, GUI Testing
Slides: {{:module05-testcodecoverage.pdf|PDF}}
GUI Testing example in the [[https://github.com/biltzerpos/TeachingCode|EECS 2311 github repository]]
===== Week 6 =====
Topics: Midterm Submission
Slides: {{:module06-midtermsubmission.pdf|PDF}}
===== Week 7 =====
Topics: New project requirements, Continuous Deployment
Slides: {{:module07-continuousdeployment.pdf|PDF}}
[[https://github.com/biltzerpos/counterci|Github repo with continuous deployment]]
===== Week 8 =====
Topics: Design Documentation
Slides: {{:module08-designdocumentation.pdf|PDF}}
[[http://www.tracemodeler.com/articles/a_quick_introduction_to_uml_sequence_diagrams/|Sequence diagram tutorial 1]]
[[https://online.visual-paradigm.com/tutorials/sequence-diagram-tutorial/|Sequence diagram tutorial 2]]
[[http://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools|List of UML tools]]
===== Week 9 =====
Topics: Issue tracking
Slides: {{:module09-issuetracking.pdf|PDF}}
[[https://developer.mozilla.org/en-US/docs/Screening_duplicate_bugs | How to find reported bugs]]
[[https://bugs.eclipse.org/bugs/query.cgi|Search for Eclipse bugs]]
===== Week 10 =====
Topics: Debugging
Slides: {{:module10-debugging.pdf|PDF}}
===== Week 11 =====
Topics: Refactoring
Slides: {{:module11-refactoring.pdf|PDF}}
===== Week 12 =====
Final Submission
Slides: {{:module12-finalsubmission.pdf|PDF}}
-->