Bug Tracking System Full Document
Bug Tracking System Full Document
ABSTRACT:
INTRODUCTION:
Bug tracking is a system which is used to solve out any type of bugs in
any software. It is mostly useful for any software company. In this system we
have design different types of user permission like developer, tester having
different rights to connect software. A bug tracking system helps us to keep
track of bugs detected by tester of software and provide complete details
regarding bugs to the developer as well as project manager of the software
being tested. Bug Tracking System ensures the user of it will be able track the
bug details as well as the status of debugging. For many years, bug-tracking
mechanism is employed only in some of the large software development houses.
Most of the other small firms and developers never bothered with bug tracking
at all, instead they simply relied on shared lists and email to monitor the status
of defects. This procedure is error-prone and tends the developer to consider the
bug as insignificant which ends up being dropped or ignored. Bug Tracking
System plays a vital role in the testing phase. The Bug Tracking System
maintains the different user interfaces separately i.e., it provides separate
environments for project manager, developer and tester. Bugs will be assigned
to a person along with a bug id, screenshot, description, project name, etc. Bug
can be submitted to the tester with an attachment for detailed report of the bug.
Admin can maintain users, projects, organizations, bug categories, bug
priorities, status of bug etc.
EXISTING SYSTEM:
In the existing system, the project manager gives the manual bug report to
developers. Also the follow-up process also manual system. Once the bug has
detected the tester give the hard copy to the project manager. Then it transfers to
the developers. Once its completed developer informs through the hard copy. In
this existing system full process cover by manual process.
DIS-ADVANTAGE:
The tester report which is called Bug Report is in the form of physical
document. If the document is damaged, then the total information about
the bug will be lost.
The bug information is not stored in the database for future reference.
PROPOSED SYSTEM:
SYSTEM ARCHITECTURE:
System Requirements:
Software and Hardware Details:
Software:
Net beans
MySQL
JDK
Windows 7 or above
Hardware:
RAM: 2 GB or Above
Hard Disk: 250 GB or Above
Software Features:
System implementation:
Cloud Computing:
Cloud computing is the use of computing resources (hardware and software) that are
delivered as a service over a network (typically the Internet). The name comes from the use
of a cloud-shaped symbol as an abstraction for the complex infrastructure it contains in
system diagrams. Cloud computing entrusts remote services with a user's data, software and
computation.
Using software as a service, users also rent application software and databases. The cloud
providers manage the infrastructure and platforms on which the applications run. End users
access cloud-based applications through a web browser or a light-weight desktop or mobile
app while the business software and user's data are stored on servers at a remote location.
Proponents claim that cloud computing allows enterprises to get their applications up and
running faster, with improved manageability and less maintenance, and enables IT to more
rapidly adjust resources to meet fluctuating and unpredictable business demand.
Characteristics
Device and location independence enable users to access systems using a web browser
regardless of their location or what device they are using (e.g., PC, mobile phone). As
infrastructure is off-site (typically provided by a third-party) and accessed via the
Internet, users can connect from anywhere.
Virtualization technology allows servers and storage devices to be shared and utilization
be increased. Applications can be easily migrated from one physical server to another.
Multitenancy enables sharing of resources and costs across a large pool of users thus
allowing for:
Centralization of infrastructure in locations with lower costs (such as real estate,
electricity, etc.)
Peak-load capacity increases (users need not engineer for highest possible load-levels)
Utilization and efficiency improvements for systems that are often only 10–20%
utilized.
Reliability is improved if multiple redundant sites are used, which makes well-designed
cloud computing suitable for business continuity and disaster recovery.[30]
Scalability and elasticity via dynamic ("on-demand") provisioning of resources on a
fine-grained, self-service basis near real-time, without users having to engineer for peak
loads.
Performance is monitored, and consistent and loosely coupled architectures are
constructed using web services as the system interface.
Security could improve due to centralization of data, increased security-focused
resources, etc., but concerns can persist about loss of control over certain sensitive data,
and the lack of security for stored kernels. Security is often as good as or better than other
traditional systems, in part because providers are able to devote resources to solving
security issues that many customers cannot afford. However, the complexity of security is
greatly increased when data is distributed over a wider area or greater number of devices
and in multi-tenant systems that are being shared by unrelated users. In addition, user
access to security audit logs may be difficult or impossible. Private cloud installations are
in part motivated by users' desire to retain control over the infrastructure and avoid losing
control of information security.
Maintenance of cloud computing applications is easier, because they do not need to be
installed on each user's computer and can be accessed from different places.
Virtualization
Virtualization (or virtualization) is the creation of a virtual (rather than actual)
version of something, such as a hardware platform, operating system (OS), storage device, or
network resources.
While a physical computer in the classical sense is clearly a complete and actual
machine, both subjectively (from the user's point of view) and objectively (from the hardware
system administrator's point of view), a virtual machine is subjectively a complete machine
(or very close), but objectively merely a set of files and running programs on an actual,
physical machine (which the user need not necessarily be aware of).
JSP:
JSPs are compiled into Java Servlets by a JSP compiler. A JSP compiler may generate
a servlet in Java code that is then compiled by the Java compiler, or it may generate byte code
for the servlet directly. JSPs can also be interpreted on-the-fly reducing the time taken to
reload changesJavaServer Pages (JSP) technology provides a simplified, fast way to create
dynamic web content. JSP technology enables rapid development of web-based applications
that are server- and platform-independent.
Java is a set of several computer software products and specifications from Oracle
Corporation that provides a system for developing application and deploying it in a cross-
platform computing environment. Java is used in a wide variety of platforms from embedded
devices and mobile phones on the low end, to enterprise servers and supercomputers on the
high end. While less common, Java applets are sometimes used to provide improved and
secure functions while browsing the World Wide Web on desktop computers.
Architecture OF JSP:
Active Server Pages (ASP). ASP is a similar technology from Microsoft. The
advantages of JSP are twofold. First, the dynamic part is written in Java, not Visual
Basic or other MS-specific language, so it is more powerful and easier to use. Second,
Pure Servlets. JSP doesn't give you anything that you couldn't in principle do with a
servlet. But it is more convenient to write (and to modify!) regular HTML than to
have a zillion println statements that generate the HTML. Plus, by separating the look
from the content you can put different people on different tasks: your Web page
design experts can build the HTML, leaving places for your servlet programmers to
externally-defined pieces into a static Web page. JSP is better because it lets you use
servlets instead of a separate program to generate that dynamic part. Besides, SSI is
really only intended for simple inclusions, not for "real" programs that use form data,
JavaScript. JavaScript can generate HTML dynamically on the client. This is a useful
capability, but only handles situations where the dynamic information is based on the
client's environment. With the exception of cookies, HTTP and form submission data
is not available to JavaScript. And, since it runs on the client, JavaScript can't access
server-side resources like databases, catalogs, pricing information, and the like.
Static HTML. Regular HTML, of course, cannot contain dynamic information. JSP is
so easy and convenient that it is quite feasible to augment HTML pages that only
benefit marginally by the insertion of small amounts of dynamic data. Previously, the
cost of using dynamic data would preclude its use in all but the most valuable
instances.
SERVLETS
The Java Servlet API allows a software developer to add dynamic content to a Web
server using the Java platform. The generated content is commonly HTML, but may be other
data such as XML. Servlets are the Java counterpart to non-Java dynamic Web content
technologies such as PHP, CGI and ASP.NET. Servlets can maintain state across many server
transactions by using HTTP cookies, session variables or URL rewriting.
The Servlet API, contained in the Java package hierarchy javax.servlet, defines the
expected interactions of a Web container and a servlet. A Web container is essentially the
component of a Web server that interacts with the servlets. The Web container is responsible
for managing the lifecycle of servlets, mapping a URL to a particular servlet and ensuring
that the URL requester has the correct access rights.
A Servlet is an object that receives a request and generates a response based on that
request. The basic servlet package defines Java objects to represent servlet requests and
responses, as well as objects to reflect the servlet's configuration parameters and execution
environment. The package javax.servlet.http defines HTTP-specific subclasses of the generic
servlet elements, including session management objects that track multiple requests and
responses between the Web server and a client. Servlets may be packaged in a WAR file as a
Web application.
Servlets are Java technology's answer to CGI programming. They are programs that run
on a Web server and build Web pages. Building Web pages on the fly is useful (and
commonly done) for a number of reasons:
The Web page is based on data submitted by the user. For example the results pages
from search engines are generated this way, and programs that process orders for e-
commerce sites do this as well.
The data changes frequently. For example, a weather-report or news headlines page
might build the page dynamically, perhaps returning a previously built page if it is
still up to date.
The Web page uses information from corporate databases or other such sources. For
example, you would use this for making a Web page at an on-line store that lists
current prices and number of items in stock.
Some Web servers, such as Sun's Java Web Server (JWS), W3C's Jigsaw and Gefion
Software's LiteWebServer (LWS) are implemented in Java and have a built-in servlet engine.
Other Web servers, such as Netscape's Enterprise Server, Microsoft's Internet Information
Server (IIS) and the Apache Group's Apache, require a servlet engine add-on module. The
add-on intercepts all requests for servlets, executes them and returns the response through the
Web server to the client. Examples of servlet engine add-ons are Gefion Software's
WAICoolRunner, IBM's WebSphere, Live Software's JRun and New Atlanta's ServletExec.
All Servlet API classes and a simple servlet-enabled Web server are combined into
the Java Servlet Development Kit (JSDK), available for download at Sun's official Servlet
site .To get started with servlets I recommend that you download the JSDK and play around
with the sample servlets.
2. The container calls the init() method. This method initializes the servlet and must
be called before the servlet can service any requests. In the entire life of a servlet,
3. After initialization, the servlet can service client-requests. Each request is serviced
in its own separate thread. The container calls the service() method of the servlet
for every request. The service() method determines the kind of request being made
the servlet must provide an implementation for these methods. If a request for a
method that is not implemented by the servlet is made, the method of the parent
service. The destroy () method like init () is called only once in the lifecycle of a
Servlet.
Feasibility Study
Feasibility study is the test of a system proposal according to its workability, impact
on the organization, ability to meet user needs, and effective use of recourses. It focuses on
the evaluation of existing system and procedures analysis of alternative candidate system cost
estimates. Feasibility analysis was done to determine whether the system would be feasible.
Technical Feasibility:
The technology used can be developed with the current equipments and has the
technical capacity to hold the data required by the new system.
Technical feasibility on the existing system and to what extend it can support the proposed
addition. We can add new modules easily without affecting the Core Program. Most of parts
are running in the server using the concept of stored procedures.
Operational Feasibility:
This proposed system can easily implemented, as this is based on JSP coding (JAVA)
& HTML .The database created is with MySql server which is more secure and easy to
handle. The resources that are required to implement/install these are available. The personal
of the organization already has enough exposure to computers. So the project is operationally
feasible.
Economical Feasibility:
Economic analysis is the most frequently used method for evaluating the
effectiveness of a new system. More commonly known cost/benefit analysis, the procedure is
to determine the benefits and savings that are expected from a candidate system and compare
them with costs. If benefits outweigh costs, then the decision is made to design and
implement the system. An entrepreneur must accurately weigh the cost versus benefits before
taking an action. This system is more economically feasible which assess the brain capacity
with quick & online test. So it is economically a good project
The original and reference implementation Java compilers, virtual machines, and class
libraries were developed by Sun from 1995. As of May 2007, in compliance with the
specifications of the Java Community Process, Sun relicensed most of their Java technologies
under the GNU General Public License. Others have also developed alternative
implementations of these Sun technologies, such as the GNU Compiler for Java and GNU
Class path.
J2EE Application:
Additional JAR files containing dependent classes or other components required by the
application;
Servlet
// Hello.java
import java.io.*;
import javax.servlet.*;
The Hello class overrides the service (ServletRequest, ServletResponse) method defined by
the Servlet interface to provide the code for the service request handler. The service()
method is passed a ServletRequest object that contains the request from the client and a
ServletResponse object used to create the response returned to the client. The service()
method declares that it throws the exceptions ServletException and IOException if a
problem prevents it from responding to the request.
The setContentType (String) method in the response object is called to set the MIME content
type of the returned data to "text/html". The getWriter() method in the response returns a
PrintWriter object that is used to write the data that is sent to the client. The println(String)
method is called to write the "Hello, world!" string to the response and then the close()
method is called to close the print writer, which causes the data that has been written to the
stream to be returned to the client.
System development:
Modules:
Project manager
MySQL
Ngrok
Project manager:
in this module, tester uploads the bug information with project-id, bug
title, bug description. All this data will be stores in data base. Then the
developer can see what are the bugs assigned to them. Afterwards, they can
update the status weather, it's completed or not.
MySQL:
MySQL databases are relational. In this module we are using MySQL for
storing all data. We have five tables in the DB like developer, tester, developer,
assign developer, and bug info. Each table contains its respective data. We
should communicate with DB and web app with java data base connectivity
driver.
Ngrok:
Testing
White-box testing (also known as clear box testing, glass box testing, transparent
box testing, and structural testing) is a method of testing software that tests internal
structures or workings of an application, as opposed to its functionality (i.e. black-box
testing). In white-box testing an internal perspective of the system, as well as programming
skills, are used to design test cases. The tester chooses inputs to exercise paths through the
code and determine the appropriate outputs. This is analogous to testing nodes in a circuit,
e.g. in-circuit testing (ICT).
While white-box testing can be applied at the unit, integration and system levels of
the software testing process, it is usually done at the unit level. It can test paths within a unit,
paths between units during integration, and between subsystems during a system–level test.
Though this method of test design can uncover many errors or problems, it might not detect
unimplemented parts of the specification or missing requirements.
White-box testing is a method of testing the application at the level of the source code.
The test cases are derived through the use of the design techniques mentioned above: control
flow testing, data flow testing, branch testing, path testing, statement coverage and decision
coverage as well as modified condition/decision coverage. White-box testing is the use of
these techniques as guidelines to create an error free environment by examining any fragile
code.
These White-box testing techniques are the building blocks of white-box testing, whose
essence is the careful testing of the application at the source code level to prevent any hidden
errors later on. These different techniques exercise every visible path of the source code to
minimize errors and create an error-free environment. The whole point of white-box testing is
the ability to know which line of the code is being executed and being able to identify what
the correct output should be.
Levels
1. Unit testing. White-box testing is done during unit testing to ensure that the code is
working as intended, before any integration happens with previously tested code.
White-box testing during unit testing catches any defects early on and aids in any
defects that happen later on after the code is integrated with the rest of the application
and therefore prevents any type of errors later on.
2. Integration testing. White-box testing at this level are written to test the interactions of
each interface with each other. The Unit level testing made sure that each code was
tested and working accordingly in an isolated environment and integration examines
the correctness of the behaviour in an open environment through the use of white-box
testing for any interactions of interfaces that are known to the programmer.
3. Regression testing. White-box testing during regression testing is the use of recycled
white-box test cases at the unit and integration testing levels.
White-box testing's basic procedures involve the understanding of the source code that
you are testing at a deep level to be able to test them. The programmer must have a deep
understanding of the application to know what kinds of test cases to create so that every
visible path is exercised for testing. Once the source code is understood then the source code
can be analysed for test cases to be created. These are the three basic steps that white-box
testing takes in order to create test cases:
Test procedures
Test cases
Test cases are built around specifications and requirements, i.e., what the application
is supposed to do. Test cases are generally derived from external descriptions of the software,
including specifications, requirements and design parameters. Although the tests used are
primarily functional in nature, non-functional tests may also be used. The test designer selects
both valid and invalid inputs and determines the correct output without any knowledge of the
test object's internal structure.
Ideally, each test case is independent from the others. Substitutes such as method
stubs, mock objects, fakes, and test harnesses can be used to assist testing a module in
isolation. Unit tests are typically written and run by software developers to ensure that code
meets its design and behaves as intended. Its implementation can vary from being very
manual (pencil and paper)to being formalized as part of build automation.
Testing will not catch every error in the program, since it cannot evaluate every
execution path in any but the most trivial programs. The same is true for unit testing.
Additionally, unit testing by definition only tests the functionality of the units themselves.
Therefore, it will not catch integration errors or broader system-level errors (such as functions
performed across multiple units, or non-functional test areas such as performance).
Unit testing should be done in conjunction with other software testing activities, as
they can only show the presence or absence of particular errors; they cannot prove a complete
absence of errors. In order to guarantee correct behaviour for every execution path and every
possible input, and ensure the absence of errors, other techniques are required, namely the
application of formal methods to proving that a software component has no unexpected
behaviour.
Software testing is a combinatorial problem. For example, every Boolean decision statement
requires at least two tests: one with an outcome of "true" and one with an outcome of "false".
As a result, for every line of code written, programmers often need 3 to 5 lines of test code.
This obviously takes time and its investment may not be worth the effort. There are
also many problems that cannot easily be tested at all – for example those that
are nondeterministic or involve multiple threads. In addition, code for a unit test is likely to
be at least as buggy as the code it is testing. Fred Brooks in The Mythical Man-
Month quotes: never take two chronometers to sea. Always take one or three. Meaning, if
two chronometers contradict, how do you know which one is correct?
Another challenge related to writing the unit tests is the difficulty of setting up
realistic and useful tests. It is necessary to create relevant initial conditions so the part of the
application being tested behaves like part of the complete system. If these initial conditions
are not set correctly, the test will not be exercising the code in a realistic context, which
diminishes the value and accuracy of unit test results.
To obtain the intended benefits from unit testing, rigorous discipline is needed
throughout the software development process. It is essential to keep careful records not only
of the tests that have been performed, but also of all changes that have been made to the
source code of this or any other unit in the software. Use of a version control system is
essential. If a later version of the unit fails a particular test that it had previously passed, the
version-control software can provide a list of the source code changes (if any) that have been
applied to the unit since that time.
It is also essential to implement a sustainable process for ensuring that test case
failures are reviewed daily and addressed immediately if such a process is not implemented
and ingrained into the team's workflow, the application will evolve out of sync with the unit
test suite, increasing false positives and reducing the effectiveness of the test suite.
Unit testing embedded system software presents a unique challenge: Since the
software is being developed on a different platform than the one it will eventually run on, you
cannot readily run a test program in the actual deployment environment, as is possible with
desktop programs.[7]
Functional testing
Functional testing is a quality assurance (QA) process and a type of black box
testing that bases its test cases on the specifications of the software component under test.
Functions are tested by feeding them input and examining the output, and internal program
structure is rarely considered (not like in white-box testing). Functional Testing usually
describes what the system does.
Functional testing differs from system testing in that functional testing "verifies a program by
checking it against ... design document(s) or specification(s)", while system testing
"validate a program by checking it against the published user or system requirements" (Kane,
Falk, Nguyen 1999, p. 52).
Functional testing typically involves five steps .The identification of functions that the
software is expected to perform
Performance testing
Testing types
Load testing
Load testing is the simplest form of performance testing. A load test is usually
conducted to understand the behaviour of the system under a specific expected load. This
load can be the expected concurrent number of users on the application performing a specific
number of transactions within the set duration. This test will give out the response times of all
the important business critical transactions. If the database, application server, etc. are also
monitored, then this simple test can itself point towards bottlenecks in the application
software.
Stress testing
Stress testing is normally used to understand the upper limits of capacity within the
system. This kind of test is done to determine the system's robustness in terms of extreme
load and helps application administrators to determine if the system will perform sufficiently
if the current load goes well above the expected maximum.
Soak testing
Soak testing, also known as endurance testing, is usually done to determine if the
system can sustain the continuous expected load. During soak tests, memory utilization is
monitored to detect potential leaks. Also important, but often overlooked is performance
degradation. That is, to ensure that the throughput and/or response times after some long
period of sustained activity are as good as or better than at the beginning of the test. It
essentially involves applying a significant load to a system for an extended, significant period
of time. The goal is to discover how the system behaves under sustained use.
Spike testing
Spike testing is done by suddenly increasing the number of or load generated by,
users by a very large amount and observing the behaviour of the system. The goal is to
determine whether performance will suffer, the system will fail, or it will be able to handle
dramatic changes in load.
Configuration testing
Rather than testing for performance from the perspective of load, tests are created to
determine the effects of configuration changes to the system's components on the system's
performance and behaviour. A common example would be experimenting with different
methods of load-balancing.
Isolation testing
Isolation testing is not unique to performance testing but involves repeating a test
execution that resulted in a system problem. Often used to isolate and confirm the fault
domain.
Integration testing
Purpose
The purpose of integration testing is to verify functional, performance, and
reliability requirements placed on major design items. These "design items", i.e. assemblages
(or groups of units), are exercised through their interfaces using black box testing, success
and error cases being simulated via appropriate parameter and data inputs. Simulated usage of
shared data areas and inter-process communication is tested and individual subsystems are
exercised through their input interface.
Test cases are constructed to test whether all the components within assemblages
interact correctly, for example across procedure calls or process activations, and this is done
after testing individual modules, i.e. unit testing. The overall idea is a "building block"
approach, in which verified assemblages are added to a verified base which is then used to
support the integration testing of further assemblages.
Some different types of integration testing are big bang, top-down, and bottom-up.
Other Integration Patterns are: Collaboration Integration, Backbone Integration, Layer
Integration, Client/Server Integration, Distributed Services Integration and High-frequency
Integration.
Big Bang
In this approach, all or most of the developed modules are coupled together to form a
complete software system or major part of the system and then used for integration testing.
The Big Bang method is very effective for saving time in the integration testing process.
However, if the test cases and their results are not recorded properly, the entire integration
process will be more complicated and may prevent the testing team from achieving the goal
of integration testing.
A type of Big Bang Integration testing is called Usage Model testing. Usage Model
Testing can be used in both software and hardware integration testing. The basis behind this
type of integration testing is to run user-like workloads in integrated user-like environments.
In doing the testing in this manner, the environment is proofed, while the individual
components are proofed indirectly through their use.
All the bottom or low-level modules, procedures or functions are integrated and then
tested. After the integration testing of lower level integrated modules, the next level of
modules will be formed and can be used for integration testing. This approach is helpful only
when all or most of the modules of the same development level are ready. This method also
helps to determine the levels of software developed and makes it easier to report testing
progress in the form of a percentage.
Top Down Testing is an approach to integrated testing where the top integrated
modules are tested and the branch of the module is tested step by step until the end of the
related module.
The main advantage of the Bottom-Up approach is that bugs are more easily found. With
Top-Down, it is easier to find a missing branch link
Verification and Validation are independent procedures that are used together for
checking that a product, service, or system meets requirements and specifications and that it
full fills its intended purpose. These are critical components of a quality management
system such as ISO 9000. The words "verification" and "validation" are sometimes preceded
with "Independent" (or IV&V), indicating that the verification and validation is to be
performed by a disinterested third party.
It is sometimes said that validation can be expressed by the query "Are you building
the right thing?" and verification by "Are you building it right?"In practice, the usage of these
terms varies. Sometimes they are even used interchangeably.
The PMBOK guide, an IEEE standard, defines them as follows in its 4th edition
"Validation. The assurance that a product, service, or system meets the needs of the
customer and other identified stakeholders. It often involves acceptance and suitability
with external customers. Contrast with verification."
"Verification. The evaluation of whether or not a product, service, or system complies
with a regulation, requirement, specification, or imposed condition. It is often an internal
process. Contrast with validation."
Verification is intended to check that a product, service, or system (or portion thereof,
or set thereof) meets a set of initial design specifications. In the development phase,
verification procedures involve performing special tests to model or simulate a
portion, or the entirety, of a product, service or system, then performing a review or
analysis of the modelling results. In the post-development phase, verification
procedures involve regularly repeating tests devised specifically to ensure that the
product, service, or system continues to meet the initial design requirements,
specifications, and regulations as time progresses. It is a process that is used to
evaluate whether a product, service, or system complies with
regulations, specifications, or conditions imposed at the start of a development phase.
Verification can be in development, scale-up, or production. This is often an internal
process.
Validation is intended to check that development and verification procedures for a
product, service, or system (or portion thereof, or set thereof) result in a product,
service, or system (or portion thereof, or set thereof) that meets initial
requirements. For a new development flow or verification flow, validation procedures
may involve modelling either flow and using simulations to predict faults or gaps that
might lead to invalid or incomplete verification or development of a product, service,
or system (or portion thereof, or set thereof). A set of validation requirements,
specifications, and regulations may then be used as a basis for qualifying a
development flow or verification flow for a product, service, or system (or portion
thereof, or set thereof). Additional validation procedures also include those that are
designed specifically to ensure that modifications made to an existing qualified
development flow or verification flow will have the effect of producing a product,
service, or system (or portion thereof, or set thereof) that meets the initial design
requirements, specifications, and regulations; these validations help to keep the flow
qualified. It is a process of establishing evidence that provides a high degree of
assurance that a product, service, or system accomplishes its intended requirements.
This often involves acceptance of fitness for purpose with end users and other product
stakeholders. This is often an external process.
It is sometimes said that validation can be expressed by the query "Are you building
the right thing?" and verification by "Are you building it right?". "Building the right
thing" refers back to the user's needs, while "building it right" checks that the
specifications are correctly implemented by the system. In some contexts, it is
required to have written requirements for both as well as formal procedures or
protocols for determining compliance.
It is entirely possible that a product passes when verified but fails when validated.
This can happen when, say, a product is built as per the specifications but the
specifications themselves fail to address the user’s needs.
Activities
Torres and Hyman have discussed the suitability of non-genuine parts for clinical use
and provided guidelines for equipment users to select appropriate substitutes which are
capable to avoid adverse effects. In the case when genuine parts/devices/software are
demanded by some of regulatory requirements, then re-qualification does not need to be
conducted on the non-genuine assemblies. Instead, the asset has to be recycled for non-
regulatory purposes.
System testing
Although different testing organizations may prescribe different tests as part of System
testing, this list serves as a general framework or foundation to begin with.
Structure Testing:
Output of test cases compared with the expected results created during design of test
cases.
Asking the user about the format required by them tests the output generated or
displayed by the system under consideration.
Here, the output format is considered into two was, one is on screen and another one
is printed format.
The output on the screen is found to be correct as the format was designed in the
system design phase according to user needs.
The output comes out as the specified requirements as the user’s hard copy.
Final Stage, before handling over to the customer which is usually carried out by the
customer where the test cases are executed with actual data.
The system under consideration is tested for user acceptance and constantly keeping
touch with the prospective system user at the time of developing and making changes
whenever required.
It involves planning and execution of various types of test in order to demonstrate that
the implemented software system satisfies the requirements stated in the requirement
document.
Two set of acceptance test to be run:
1. Those developed by quality assurance group.
2 Those developed by customer
CONCLUSION:
This Paper Bug Tracking and Reporting System helps an Software
Concern to detect and manage the bug in their products effectively-efficiently.
Utilizing bug tracking software can assist in troubleshooting errors for testing
and for development processes. With the ability to provide comprehensive
reports, documentation, searching capabilities, tracking bugs and issues, bug
tracking software is a great tool for those software development needs.
Depending on your development needs and the bug tracking software, you can
hope to gain several benefits from bug tracking software.
REFERENCES:
[1] Q. Umer, H. Liu, and I. Illahi, “CNN-based automatic prioritization of bug
reports,” IEEE Trans. Rel., early access, Dec. 31, 2019, doi:
10.1109/TR.2019.2959624.
[2] J. Zhang, X. Wang, D. Hao, B. Xie, L. Zhang, and H. Mei, “A survey on
bug-report analysis,” Sci. China Inf. Sci., vol. 58, no. 2, pp. 1–24, Feb. 2015.
[3] S. Deerwester, S. T. Dumais, G. W. Furnas, T. K. Landauer, and R.
Harshman, “Indexing by latent semantic analysis,” J. Amer. Soc. Inf.
Sci., vol. 41, no. 6, pp. 391–407, 1990.
[4] T. Zhang, G. Yang, B. Lee, and E. K. Lua, “A novel developer ranking
algorithm for automatic bug triage using topic model and developer relations,”
in Proc. 21st Asia–Pacific Softw. Eng. Conf., Dec. 2014, pp. 223–230.
[5] A. T. Ying and M. P. Robillard, “Developer profiles for recommendation
systems,” in Recommendation Systems in Software Engineering. Berlin,
Germany: Springer, 2014, pp. 199–222.
[6] H. Yang, X. Sun, B. Li, and Y. Duan, “DR_PSF: Enhancing developer
recommendation by leveraging personalized source-code files,” in Proc. IEEE
40th Annu. Comput. Softw. Appl. Conf. (COMPSAC), Jun. 2016, pp. 239–244.
[7] J. Xuan, H. Jiang, Z. Ren, J. Yan, and Z. Luo, “Automatic bug triage using
semi-supervised text classification,” 2017, arXiv:1704.04769.
[Online]. Available: http://arxiv.org/abs/1704.04769
[8] T. Zhang, J. Chen, H. Jiang, X. Luo, and X. Xia, “Bug report enrichment
with application of automated fixer recommendation,” in Proc.
IEEE/ACM 25th Int. Conf. Program Comprehension (ICPC), May 2017, pp.
230–240.
[9] Y. Zhou, Y. Tong, R. Gu, and H. Gall, “Combining text mining and data
mining for bug report classification,” J. Softw., Evol. Process, vol. 28, no. 3, pp.
150–176, Mar. 2016.
[10] R. Shokripour, J. Anvik, Z. M. Kasirun, and S. Zamani, “A time-based
approach to automatic bug report assignment,” J. Syst. Softw., vol. 102, pp.
109–122, Apr. 2015.
Coding:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author DELL
*/
public class assigndeveloper extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and
<code>POST</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet assigndeveloper</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet assigndeveloper at " +
request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
}
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
String projectid = request.getParameter("projectid");
String severity = request.getParameter("severity");
String empname = request.getParameter("employeename");
String bugdetail = request.getParameter("bugdetail");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/bug", "root",
"password");
Statement st = con.createStatement();
ResultSet rs1 = st.executeQuery("select projectid from buginfo where
projectid='" + projectid + "'");
if (rs1.next()) {
try {
Class.forName("com.mysql.jdbc.Driver");
con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/bug", "root",
"password");
Statement st1 =con.createStatement();
int rs = st.executeUpdate("Insert into
assigndeveloper(projectid,severity,employename,bugdetail)
VALUES('"+projectid+"','"+severity+"','"+empname+"','"+bugdetail+"')");
response.sendRedirect("Successad.jsp");
} catch (ClassNotFoundException | SQLException | IOException e) {
System.out.println(e);
}
} else {
response.sendRedirect("Errorpay.jsp");
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author DELL
*/
public class managerreg extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and
<code>POST</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet managerreg</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet managerreg at " + request.getContextPath() +
"</h1>");
out.println("</body>");
out.println("</html>");
}
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
String s0=request.getParameter("username");
String s1=request.getParameter("password");
String s2=request.getParameter("email");
String s3=request.getParameter("phoneno");
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/bug","root","p
assword");
PreparedStatement ps=con.prepareStatement("insert into projectmanager
values(?,?,?,?)");
ps.setString(1, s0);
ps.setString(2, s1);
ps.setString(3, s3);
ps.setString(4, s2);
ps.executeUpdate();
response.sendRedirect("manager.jsp");
}
catch(ClassNotFoundException | SQLException | IOException e)
{
System.out.println(e);
}
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Screen Shorts: